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

dan*_*nda 9 rust serde serde-json

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

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

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

Cor*_*ien 17

您可以通过以下方式执行此操作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);
Run Code Online (Sandbox Code Playgroud)

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

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

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