使用MapNeat重命名列表中的JSON对象



如何使用mapneat重命名字段,它位于像这样的列表对象中

{
"detail" : [
{
"name" : "huda"
},
{
"name" : "syahnaz"
}
]
}

{
"detil" : [
{
"nama" : "huda"
},
{
"nama" : "syahnaz"
}
]
}

我试着像这样变换它,但是没有用

fun test(jsonRequest: String, setup: String): MapNeat {
val transform = json(MapNeatSource.fromJson(jsonRequest)){
"detil[*].nama"*="detail[*].name"
}
return transform;
}

MapNeat作者最后的回答

答案在这里

val source = "
{
"detail" : [
{
"name" : "huda"
},
{
"name" : "syahnaz"
}
]
}
"
fun main() {
var value = json(fromJson(source)) {
"detail" *= "$.detail"
val detail = getObjectMap().get("detail") as List<Object>
"detil" /= detail.map {
json(fromObject(it)) {
"nama" *= "$.name"
}
}.toList()
- "detail"

}.getPrettyString()
print(value)
}

输出
{
"detil" : [ {
"nama" : "huda"
}, {
"nama" : "syahnaz"
} ]
}

主要思想是:

  • 选择"detail"从源头到目标:"细节";* =".detail&quot美元;
  • 在这行之后,它可以在getObjectMap()中访问,它将目标的内部表示保持为Map<String,Object>。您将结果强制转换为List '(因为它是一个数组)。
  • 然后你遍历细节,并为每个元素应用一个新的转换。
  • 你删除了"detail"因为你不再需要它了。

您可以在Mapneat github讨论中看到原始链接

Mapneat讨论

相关内容

  • 没有找到相关文章

最新更新