然后读取使用rustc_serialize修改JSON

时间:2015-07-22 06:58:49

标签: json rust rust-crates

所以我想说我想用{"foo": 13}替换{"foo": 14}。尝试:

extern crate rustc_serialize;
use rustc_serialize::json::Json;

fn main() {
    let data = Json::from_str("{\"foo\": 13, \"bar\": \"baz\"}").unwrap();
    let mut obj = data.as_object().unwrap();
    let somenum: u64 = 14;
    obj.insert(String::from_str("foo"), Json::U64(somenum));

    for (key, value) in obj.iter() {
        println!("{}: {}", key, match *value {
            Json::U64(v) => format!("{} (u64)", v),
            Json::String(ref v) => format!("{} (string)", v),
            _ => format!("other")
        });
    }
}

错误:

src/main.rs:8:5: 8:8 error: cannot borrow immutable borrowed content `*obj` \
                            as mutable
src/main.rs:8     obj.insert(String::from_str("foo"), Json::U64(somenum));
                  ^~~

1 个答案:

答案 0 :(得分:3)

as_object返回Option<&Object> - 一个不可变的引用。

要获得可变引用(Option<&mut Object>),您必须使用as_object_mut