json - 使用 rustc_serialize 读取然后修改 JSON

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

最佳答案

as_object 返回Option<&Object> ——不可变的引用。

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

关于json - 使用 rustc_serialize 读取然后修改 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31555996/

相关文章:

rust - 子模块如何从 lib.rs 的根目录导入特征?

php - 多维数组转JSON

java - 如何转义 JSON 字符串中日期时间值内的冒号

使用简单的开关读取和写入 xml 或 json 的 Java 库

sql - 生成 SQL 字符串的 Rust 函数是否容易受到 SQL 注入(inject)的攻击?

rust - 优化级别 `-Os` 和 `-Oz` 在 rustc 中有什么作用?

json - 在 chalice 中使用POST时json解码错误

rust - 用自己的字符串实现错误描述

rust - 如何构建在WSL上使用device_query crate 的项目?

rust - `crates.io` 中的代码引用与实际 crate 不匹配