/ / Analyzovanie objektu vo vnútri objektu pomocou serde_json - json, rust, hyper, serde-json

Analyzovanie objektu vo vnútri objektu pomocou serde_json - json, rust, hyper, serde-json

Uviazol som, nižšie je JSON, ktorý dostávam:

{
"BCH": {
"aclass": "currency",
"altname": "BCH",
"decimals": 10,
"display_decimals": 5
}
}

Som trochu zmätený, ako by mala moja štruktúra vyzerať, aby analyzovala atribúty pomocouserde_json prepravky. Nižšie je to, čo momentálne mám:

#[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()
}

Dostávam chybové hlásenie:

vlákno "hlavné" spanikáril na "volal Result::unwrap() na Err hodnota: ErrorImpl {code: Message ("chýbajúce pole assest"), riadok: 0, stĺpec: 0} ", src / libcore / result.rs: 860: 4

odpovede:

6 pre odpoveď č. 1

Myslím, že chcete 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);
}

detské ihrisko