I have this so far in my goal to Parse this JSON data in Rust:
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();
}
and text.json
is
{
"FirstName": "John",
"LastName": "Doe",
"Age": 43,
"Address": {
"Street": "Downing Street 10",
"City": "London",
"Country": "Great Britain"
},
"PhoneNumbers": [
"+44 1234567",
"+44 2345678"
]
}
What should be my next step into parsing it? My primary goal is to get JSON data like this, and parse a key from it, like Age.
Upvoted the accepted answer (as it helps), but just adding my answer, using the widely used serde_json crate referenced by @FrickeFresh
Assuming your
foo.json
isImplementation would look something like
There is a brief and complete example of how to read JSON from file in
serde_json::de::from_reader
docs.Here is a short snippet for:
Enjoy:
Serde is the preferred JSON serialization provider. You can read the JSON text from a file a number of ways. Once you have it as a string, use
serde_json::from_str
:You could even use something like
serde_json::from_reader
to read directly from an openedFile
.Serde can be used for formats other than JSON and it can serialize and deserialize to a custom struct instead of an arbitrary collection:
Check the Serde website for more details.
Solved by the many helpful members of the Rust community: