2015-05-17 52 views
13

Tôi có điều này cho đến nay trong mục tiêu của tôi để phân tích dữ liệu JSON này trong Rust:Làm cách nào để phân tích cú pháp tệp 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 = &copy(&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" 
    ] 
} 

gì nên bước tiếp theo của tôi vào phân tích nó? Mục tiêu chính của tôi là lấy dữ liệu JSON như thế này và phân tích một khóa từ nó, như Độ tuổi.

+0

Dường như bạn đọc trang phù hợp với phân tích nó. Bạn có thấy [example] (http://doc.rust-lang.org/rustc-serialize/rustc_serialize/json/index.html#parsing-a-str-to-json-and-reading-the-result) xuống trang trông giống như những gì bạn muốn? – squiguy

+0

@squiguy Vâng tôi đã thêm 'let obj = data.as_object(). Unwrap();' và có 'thread '

' panicked at 'được gọi là' Option :: unwrap() 'trên một' None' value', C:/bo t/slave/ổn định-dist-rustc-win-32/build/src/libcore \ option.rs: 362 } Đã xảy ra lỗi không xác định ' – Vikaton

Trả lời

20

giải quyết bởi nhiều thành viên hữu ích của cộng đồng Rust:

extern crate rustc_serialize; 
use rustc_serialize::json::Json; 
use std::fs::File; 
use std::io::Read; 

fn main() { 
    let mut file = File::open("text.json").unwrap(); 
    let mut data = String::new(); 
    file.read_to_string(&mut data).unwrap(); 

    let json = Json::from_str(&data).unwrap(); 
    println!("{}", json.find_path(&["Address", "Street"]).unwrap()); 
} 
+0

Vấn đề là phương pháp đọc của tôi từ tệp – Vikaton

+0

Lưu ý rằng rustc_serialize repo nói rằng nó không còn được dùng để ủng hộ https://github.com/serde-rs/json – FrickeFresh

Các vấn đề liên quan