如何使用Serde使用顶级数组反序列化JSON?

我有一些从Web服务返回的JSON数据。JSON是顶级数组:

[

{

"data": "value1"

},

{

"data": "value2"

},

{

"data": "value3"

}

]

使用serde_derivemake struct可以对数组中包含的数据进行反序列化,但是,我无法让Serde对顶级数组进行反序列化。

我是否缺少某些内容,还是Serde不能对顶级数组进行反序列化?

回答:

您可以使用Vec

extern crate serde;

extern crate serde_json;

#[macro_use]

extern crate serde_derive;

use serde_json::Error;

#[derive(Serialize, Deserialize, Debug)]

struct Foo {

data: String,

}

fn typed_example() -> Result<(), Error> {

let data = r#"[

{

"data": "value1"

},

{

"data": "value2"

},

{

"data": "value3"

}

]"#;

let array: Vec<Foo> = serde_json::from_str(data)?;

for elem in array.iter() {

println!("{:?}", elem);

}

Ok(())

}

fn main() {

typed_example().unwrap();

}

以上是 如何使用Serde使用顶级数组反序列化JSON? 的全部内容, 来源链接: utcz.com/qa/400186.html

回到顶部