使用jackson更新scala中的json字符串



我有一个json

val nodeJson =
s"""
{
"NAME":"node1",
"CONFIG":{
"colMap": {
"idcols": [

],
"emailcols":[
]
},
"col.partitions": "3"
}
}
"""

我必须填充";idcols";以及";emailcols";从scala数组动态生成数组。

就像我有数组一样:

val idcols = Array("per_id","dep_id")
val emailcols = Array("per_email","dep_email")

则需要在json字符串中设置这些值

我必须使用com.fasterxml.jackson库。

我可以得到阵列:

val obj = new ObjectMapper()
val root = obj.readTree(nodeJson)
val value = root.get("CONFIG").get("colMap")
println(value)

但我不知道如何更新它并将其设置回json。Kinldy告诉我如何更新json字符串。

使用jackson时,大多数赋值函数不是在JsonNode上定义的,而是该类型节点的特定子类(在您的例子中,ArrayNode用于json数组(

例如,要将字符串添加到idCols数组,您需要:

root.get("CONFIG").get("colMap").get("idCols").asInstanceOf[ArrayNode].add("someArbitraryString")

如果您更喜欢类型安全性(以分配额外的case类的性能为代价(,您还可以考虑创建一个与文档结构匹配的case类,将json解析为该类,更新scala case类并序列化回json字符串。

相关内容

  • 没有找到相关文章

最新更新