rust_serialize错误:必须在此上下文中知道此值的类型

时间:2016-05-24 13:23:37

标签: rust

以下示例不起作用,但我无法弄清楚原因:

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();
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我认为至少错误是指向错误的位置?

1 个答案:

答案 0 :(得分: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);
}