gson 仅从Json到Kotlin的一部分进行隐蔽

muk1a3rh  于 2022-11-06  发布在  Kotlin
关注(0)|答案(1)|浏览(146)

我有一个输入json有效载荷:

{
  "header": null,
  "body": {
    "a": "1,2,3,4,5",
    "c": "d",
    "id": 23.5,
    "number": 123
  }
}

并且我的程序需要将其转换为以下输出有效负载:

{
  "header": null,
  "body": {
    "a": [{"a":"1"},{"a":"2"},{"a":"3"},{"a":"4"},{"a":"5"},],
    "c": "d",
    "id": 23.5,
    "id2": 23.5,
    "number": 123
  }
}

在输入和输出中,Header始终为null。我为输入和输出主体创建了一个类:

data class InBody (
    val a: String,
    val c: String,
    val id: Double,
    val number: Long
)
data class OutBody (
    val a: List<AIndividual>,
    val c: String,
    val id: Double,
    val id2: Double,
    val number: Long
)
data class AIndividual(val a: String)

正如您所看到的,两个输入之间所需的转换是最小的。
1.需要将a拆分为对象列表
1.需要在输出中将id字段复制到id2
我想使用Gson将json转换为输入模型类,再转换为输出模型类,然后输出json。有没有更简单的方法来代替?
同样,如果我按照这个解决方案去做,如何使用Gson只将jsonbody元素读入InBody类(并忽略头),并在将OutBody类转换为json时也是如此?
如果Gson不是一个合适的图书馆,任何其他的方法都更好,请让我知道。

sq1bmfud

sq1bmfud1#

如果性能不是一个问题(很少是),a会来回地做整个转换。对我来说,不值得麻烦地开始手动做事情,容易出错,当一个新的变化出现时,你必须继续做不安全的代码,需要彻底的测试。

相关问题