rust - 如何使用 serde_json 动态构建 json 数组或对象?

标签 rust serde serde-json

我需要在运行时构建一个 json 对象。现在,只是一个简单的 {"key": "stringvalue"} 对象。但是每个键/值对必须在一个循环中添加。

这看起来很简单/基本,但我没有找到任何好的示例或文档。我终于设法让一些东西起作用了,但它似乎太复杂了,不是正确的方法。

任何人都可以发布一个工作示例吗?

最佳答案

您可以使用 serde_json::Value 执行此操作:

use serde_json::{Map, Value};

let mut map = Map::new();

// assuming keys_vals is a Vec<(String, String)>
for (key, val) in keys_vals.into_iter() {
    map.insert(key, Value::String(val));
}

let obj = Value::Object(map);

如果您需要构造对象并仍然更新 map :

let mut obj = Value::Object(map);

if let Value::Object(ref mut map) = obj {
    map.insert(key, val);
}

关于rust - 如何使用 serde_json 动态构建 json 数组或对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59047280/

相关文章:

rust - 有没有办法用 Serde 定义标签字段?

json - 东京和塞尔德 : deserializing JSON

rust - 如果变体的值为空,则跳过变体的序列化? (自定义序列化)

json - 用rust反序列化具有多个可能值的JSON

rust - 使用 serde::from_value 反序列化为泛型类型

rust - 如何在不重复方法的情况下为结构实现多个特征?

rust - 特征实现大小

arrays - 结构中的枚举数组打印变体名称和值

python - 将 Python 列表传递给嵌入式 Rust 函数

rust - 从 HashMap 或 Vec 返回引用会导致借用超出其所在范围?