我有一个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字符串。