Arrays Rust jsonrpc核心以映射或数组的形式访问参数
我通过查找实现了json rpc服务器Arrays Rust jsonrpc核心以映射或数组的形式访问参数,arrays,dictionary,parameters,rust,json-rpc,Arrays,Dictionary,Parameters,Rust,Json Rpc,我通过查找实现了json rpc服务器 使用jsonrpc_核心::*; 使用jsonrpc_http_服务器::*; fn main(){ 让mut io=IoHandler::new(); io.add_方法(“say_hello”,|:Params|{ println!(“参数:{:?}”,参数); Ok(Value::String(“hello”.to_String())) }); 让_server=ServerBuilder::new(io) .start_http(&“127.0.0
使用jsonrpc_核心::*;
使用jsonrpc_http_服务器::*;
fn main(){
让mut io=IoHandler::new();
io.add_方法(“say_hello”,|:Params|{
println!(“参数:{:?}”,参数);
Ok(Value::String(“hello”.to_String()))
});
让_server=ServerBuilder::new(io)
.start_http(&“127.0.0.1:3030”.parse().unwrap())
.expect(“无法启动RPC服务器”);
_server.wait();
}
上述服务器正在按预期工作。这里参数采用向量或映射
对于请求{“jsonrpc”:“2.0”,“方法”:“say_hello”,“参数”:{“a”:2,“b”:3},“id”:1}
它打印
参数:映射({“a”:数字(2),“b”:数字(3)})
对于请求{“jsonrpc”:“2.0”,“方法”:“say_hello”,“params”:[2,3],“id”:1}
,它会打印出来
参数:数组([编号(42),编号(23)])
如何从该参数中访问这些参数作为映射或数组枚举
更新1
我修改了我的代码以获取参数作为映射-
io.add_方法(“say_hello”,|params:params|{
let map:HashMap=params.parse().unwrap();
println!(“参数:{:?}”,map);
Ok(Value::String(“hello”.to_String()))
});
它打印
参数:{“a”:数字(2),“b”:数字(3)}
更新2
修改通过键访问地图-
io.add_方法(“say_hello”,|params:params|{
let map:HashMap=params.parse().unwrap();
println!(“参数:{:?}”,map);
让var_a=map.get(&“a”);
设var_b=map.get(&“b”);
println!(“A:{:?},B:{:?}”,变量A,变量B);
Ok(Value::String(“hello”.to_String()))
});
现在我得到以下错误:
error[E0277]:特性绑定'std::string::string:
std::BROW::BROW`不满足-->src/main.rs:41:29
|
41 |让var_a=map.get(&“a”);
|^^^特性'std::borrow::borrow'未为'std::string::string'实现
|
=帮助:找到了以下实现:
不知道你问“如何访问”的确切意思,但这里是:
使用jsonrpc_core::types::params::params;//jsonrpc core=“14.0.5”
使用serde_json;//serde_json=“1.0.44”
fn main()->结果{
设map=r#“{”a:2,“b:3}”#;
让param=serde_json::from_str::(map)?;
如果让Params::Map(m)=param{
println!(“总{}元素:,m.len());
对于k in m.keys(){
println!(“\t{}=>{:?}”,k,m.get(k));
}
}
设arr=r#“[2,3]”;
让param=serde_json::from_str::(arr)?;
如果让Params::Array(a)=param{
println!(“Totle{}元素:{:?}”,a.len(),a);
}
好(())
}
serde_json
部分与您关系不大。这只是获取Params
值的一种方法。模式匹配后,m
为a,a
为规则。您可以根据它们的API任意操作它们。通过“如何访问”我指的是通过索引(当数组时)或键(当映射时)访问参数。请检查我的更新,它给了我不同的错误。@Bopsimap.get(“a”)
。回到最基本的问题上,阅读铁锈书会有所帮助。