我有一個json
val nodeJson =
s"""
{
"NAME":"node1",
"CONFIG":{
"colMap": {
"idcols": [
],
"emailcols":[
]
},
"col.partitions": "3"
}
}
"""
我必須從 scala 陣列動態填充“idcols”和“emailcols”陣列。
就像我有陣列一樣:
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 字串。
uj5u.com熱心網友回復:
使用杰克遜時,您的大多數突變器都沒有定義,JsonNode而是該型別節點的特定子類(在您的情況下ArrayNode為 json 陣列)
例如,要將字串添加到idCols陣列中,您將:
root.get("CONFIG").get("colMap").get("idCols").asInstanceOf[ArrayNode].add("someArbitraryString")
如果您更喜歡型別安全(以分配額外案例類的性能為代價),您還可以考慮創建與檔案結構匹配的案例類,將 json 決議為該類,更新 scala 案例類并序列化回 json細繩。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/422305.html
標籤:
