到目前为止,我的目标是在Rust中解析JSON数据:
extern crate rustc_serialize;
use rustc_serialize::json::Json;
use std::fs::File;
use std::io::copy;
use std::io::stdout;
fn main() {
let mut file = File::open("text.json").unwrap();
let mut stdout = stdout();
let mut str = ©(&mut file, &mut stdout).unwrap().to_string();
let data = Json::from_str(str).unwrap();
}
且text.json
是
{
"FirstName": "John",
"LastName": "Doe",
"Age": 43,
"Address": {
"Street": "Downing Street 10",
"City": "London",
"Country": "Great Britain"
},
"PhoneNumbers": [
"+44 1234567",
"+44 2345678"
]
}
我的主要目标是获得这样的JSON数据,并从中解析出一个键,比如Age。
6条答案
按热度按时间kmpatx3s1#
Serde是首选的JSON序列化提供程序。您可以使用read the JSON text from a file a number of ways。一旦将其作为字符串,请使用
serde_json::from_str
:Cargo.toml:
您甚至可以使用
serde_json::from_reader
之类的代码直接从打开的File
中读取数据。Serde可以用于JSON以外的格式,并且可以序列化和反序列化为自定义结构体,而不是任意集合:
有关详细信息,请查看Serde website。
yhived7q2#
由Rust社区的许多乐于助人的成员解决:
roejwanj3#
在
serde_json::de::from_reader
文档中有一个简单而完整的例子,说明如何从文件中读取JSON。以下是的简短片段:
享受:
snvhrwxg4#
对已接受的答案投了赞成票(因为这很有帮助),但只是添加了我的答案,使用了@FrickeFresh引用的广泛使用的serde_json crate
假设您的
foo.json
为实现类似于
0h4hbjxa5#
你可以将这个功能提取到一个实用程序中。根据他们的文档,这可能是一个有效的软件
u3r8eeie6#
Rust附带了一个优雅的native-json(wsd::json)crate,它用Rust声明了本机JSON对象,以及对成员的本机访问。
原生json方式
serde_json方式