0
當我將ObjectNode序列化回字符串時,遇到了排除Null/Empty屬性的問題。我搜索了一下,關於的所有引用JSONInclude.Include.NON_NULL是關於從一個Bean,而不是一個ObjectNode的序列化和反序列化 - 它認爲序列化與「任意」ObjectNode的行爲不同,而不是一個預定義的Bean。Jackson ObjectNode:如何在序列化中不包含NULL
我的目標是讓輸出= { 「名」: 「MYNAME」},不{ 「名」: 「MYNAME」, 「女媧」:空, 「搶先」: 「」}
import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.databind.node.ObjectNode
import com.fasterxml.jackson.databind.ObjectMapper
val jsonInputStr = """{"name": "myName"}"""
val newObjMapper = new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_EMPTY)
val json = newObjMapper.readTree(jsonInputStr).asInstanceOf[ObjectNode]
json.put("nu", null.asInstanceOf[String])
json.put("empt", "")
val str = newObjMapper.writeValueAsBytes(json)
println(s"OUTPUT = ${new String(str)}")
打印: OUTPUT = { 「名」: 「MYNAME」, 「女媧」:空, 「搶先」: 「」}
一個大的嵌套地圖(我的實際Json對象與很多不同類型嵌套)?呸。真的希望這個功能可以在ObjectNode或JsonNode上工作,這只是我的語法錯誤。他們已經明確地將它添加到Beans中,並且objectMapper逐個遍歷整個樹節點,應該很容易讓它們提供該功能。 ......似乎沒有多少人使用可變的ObjectNode。 –
我編輯了我的答案,提供了一個解決方案,使您可以在節點上執行您的域邏輯(儘管這種醜陋的序列化)。 –