如何使用 serde_json 动态构建 json 数组或对象?
How to build json arrays or objects dynamically with serde_json?
我需要在运行时构建一个 json 对象。现在,只是一个简单的 {"key": "stringvalue"} 对象。但是每个 key/val 对必须循环添加。
这看起来确实 simple/basic,但我没有找到任何好的示例或文档。我终于设法让一些东西起作用了,但它似乎太复杂了,不是正确的方法。
任何人都可以 post 一个工作示例吗?
您可以使用 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);
如果您需要构建对象并仍然更新地图:
let mut obj = Value::Object(map);
if let Value::Object(ref mut map) = obj {
map.insert(key, val);
}
我需要在运行时构建一个 json 对象。现在,只是一个简单的 {"key": "stringvalue"} 对象。但是每个 key/val 对必须循环添加。
这看起来确实 simple/basic,但我没有找到任何好的示例或文档。我终于设法让一些东西起作用了,但它似乎太复杂了,不是正确的方法。
任何人都可以 post 一个工作示例吗?
您可以使用 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);
如果您需要构建对象并仍然更新地图:
let mut obj = Value::Object(map);
if let Value::Object(ref mut map) = obj {
map.insert(key, val);
}