使用serde_json解析对象内部的对象

使用serde_json解析对象内部的对象,json,rust,serde,hyper,serde-json,Json,Rust,Serde,Hyper,Serde Json,我被卡住了,下面是我收到的JSON: { "BCH": { "aclass": "currency", "altname": "BCH", "decimals": 10, "display_decimals": 5 } } 对于使用serde_json板条箱解析属性,我有点困惑。以下是我目前拥有的: #[derive(Deserialize, Debug)] struct Assets { aclass: String,

我被卡住了,下面是我收到的JSON:

{
   "BCH": {
      "aclass": "currency",
      "altname": "BCH",
      "decimals": 10,
      "display_decimals": 5
   }
}
对于使用
serde_json
板条箱解析属性,我有点困惑。以下是我目前拥有的:

#[derive(Deserialize, Debug)]
struct Assets  {  
    aclass: String,
    altname: String,
    decimals: u8,
    display_decimals: u8,
}

#[derive(Deserialize, Debug)]
struct Currency {
    assest: Assets,
}


fn to_assets_type(value: serde_json::Value) -> Currency {
 serde_json::from_value(value).unwrap()
}
我收到一条错误消息:

线程“main”在一个
Err
值:ErrorImpl{code:Message(“缺少字段
assest
”),第0行, 列:0}',src/libcore/result.rs:860:4


我想你需要一个HashMap

#[macro_use] extern crate serde;
extern crate serde_json;

use std::collections::HashMap;

static VALUE: &str = r#"{
   "BCH": {
      "aclass": "currency",
      "altname": "BCH",
      "decimals": 10,
      "display_decimals": 5
   }
}"#;

#[derive(Deserialize, Debug)]
struct Assets {  
    aclass: String,
    altname: String,
    decimals: u8,
    display_decimals: u8,
}

fn main() {
    let serde_value: HashMap<String, Assets> = serde_json::from_str(VALUE).unwrap();

    println!("{:?}", serde_value);
}
#[macro_use]外部板条箱服务器;
外部板条箱serde_json;
使用std::collections::HashMap;
静态值:&str=r#“{
“BCH”:{
“aclass”:“currency”,
“altname”:“BCH”,
“小数”:10,
“显示小数”:5
}
}"#;
#[派生(反序列化、调试)]
结构资产{
aclass:String,
altname:String,
小数:u8,
显示小数:u8,
}
fn main(){
让serde_value:HashMap=serde_json::from_str(value).unwrap();
println!(“{:?}”,serde_值);
}

看起来你的
json
是一个对象内部的对象……我现在无法测试我的直觉,但我认为你应该尝试将你的
Currency
资产字段重命名为
BCH
。BCH不是静态的