kotlin - 如何添加/删除/编辑 kotlinx.serialization.json.JsonObject 的值
问题描述
我目前正在努力寻找将财产添加到现有jsonObject(kotlinx.serialization.json.JsonObject)
甚至我发现 JsonObject 内部有私有的不可变映射
private val content: Map<String, JsonElement>
场景:假设我已经有一个jsonObject
包含 50 个属性的属性,并且考虑到任意键的 jsonObject 可以具有任意数量的深度。
对于这种情况,我们如何有效地执行以下操作:
- 添加原始属性
- 更新原始属性
- 删除原始属性
仅供参考:即使我发现有一个名为JsonObjectBuilder的类,但它不需要现有的 JsonElement / JsonObject / JsonArray 实际上它会新创建另一个 jsonObject。
感谢您抽出时间阅读到这里
解决方案
由于这个内部content
地图是不可变的,唯一的编辑方法JsonObject
是创建一个新的(旧的)。幸运的是,有一个JsonObject
构造函数采用 a Map
,而且JsonObject
实现了Map
接口本身。所以我建议以下成语:
val newJsonObj = JsonObject(oldJsonObj.toMutableMap().apply {
// edit like ordinary mutable map
})
推荐阅读
- jenkins - Jenkins Pipeline:使用 P4 作为 SCM 提供程序时为空的 changeSets
- html - HTML代码在r传单中用于弹出窗口但不适用于标签
- javascript - 获取 HTML 元素的所有 IDL 属性
- javascript - 使用快乐的 ESLint 运行一次 useEffect
- c - 让 C 宏将自己替换为结果中的函数调用?
- java - Amazon 数据管道失败 - 内容长度分隔正文过早结束
- python - 熊猫指数移动平均线(ewm)权重在整个数据系列中“持续存在”?
- python - 澄清批量标准化如何在 Tensorflow 上工作
- c# - 返回 IQueryable
与异步 - reactjs - 单元测试访问全局存储的 React 组件