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

时间:2019-11-26 09:07:50

标签: rust serde serde-json

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

这看起来确实很简单/基本,但是我没有找到任何好的示例或文档。我终于设法使某些工作成功了,但是似乎太费时了,以至于没有正确的方法。

任何人都可以发布有效的示例吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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);
}