Разбор объекта внутри объекта с помощью serde_json
Я застрял, ниже 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' запаниковала 'под названием
Result::unwrap()
наErr
значение: ErrorImpl {код: сообщение ("отсутствует полеassest
"), строка: 0, столбец: 0 }', src/libcore/result.rs:860:4
1 ответ
Решение
Я думаю, что вы хотите 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);
}