【问题标题】:How to add / remove / edit value of kotlinx.serialization.json.JsonObject如何添加/删除/编辑 kotlinx.serialization.json.JsonObject 的值
【发布时间】:2021-07-09 12:45:08
【问题描述】:

我目前正在努力寻找将属性添加到现有 jsonObject(kotlinx.serialization.json.JsonObject) 的最佳方法

我什至发现 JsonObject 内部有私有的不可变映射

private val content: Map<String, JsonElement>

场景:假设我已经有一个 jsonObject,其中包含 50 个属性,并且考虑到任意键的 jsonObject 可以有任意数量的深度。

对于这种情况,我们如何有效地执行以下操作:

  1. 添加原始属性
  2. 更新原始属性
  3. 删除原始属性

仅供参考: 即使我发现有一个名为 JsonObjectBuilder 的类,但它不需要现有的 JsonElement / JsonObject / JsonArray 实际上它会新创建另一个 jsonObject。

感谢您抽出时间阅读到这里????

https://github.com/Kotlin/kotlinx.serialization/issues/1593

【问题讨论】:

    标签: kotlin jetbrains-ide kotlin-multiplatform kotlin-multiplatform-mobile


    【解决方案1】:

    由于这个内部content 映射是不可变的,编辑JsonObject 的唯一方法是创建一个新的(旧的)。幸运的是,有一个JsonObject 构造函数采用Map,而且JsonObject 实现了Map 接口本身。所以我建议以下成语:

    val newJsonObj = JsonObject(oldJsonObj.toMutableMap().apply {
        // edit like ordinary mutable map
    })
    

    【讨论】:

    猜你喜欢
    • 2019-08-21
    • 2014-06-02
    • 1970-01-01
    • 2018-08-03
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多