2016-05-24 29 views
3

下面的例子不工作时也可以知道,但我想不通为什么:rust_serialize错误:这个值的类型必须在这方面

extern crate rustc_serialize; 

use rustc_serialize::json; 

fn main() { 

    let json_str = "{\"foo\": \"bar\"}"; 
    let foo: String = json::decode(&json_str).unwrap().as_object().get("foo").unwrap().as_string().unwrap(); 
    println!("{}", foo); 

} 

错误:

src/main.rs:8:23: 8:67 error: the type of this value must be known in this context 
src/main.rs:8  let foo: String = json::decode(&json_str).unwrap().as_object().get("foo").unwrap().as_string().unwrap(); 
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

我至少错误是指在这里错误的位置?

回答

3

如果你想得到一个Json,你不能使用json::decode,因为Json不执行Decodable

但你可以做到以下几点:

extern crate rustc_serialize; 

use rustc_serialize::json::Json; 

fn main() { 
    let json_str = "{\"foo\": \"bar\"}"; 
    let json = Json::from_str(&json_str).unwrap(); 
    let foo = json.as_object().unwrap().get("foo").unwrap().as_string().unwrap(); 
    println!("{}", foo); 
} 
相关问题