[英]How do I rename the root key of a JSON with Java Jackson?
我正在使用Scala的Jackson 1.9.1將對象編組為JSON。 我的編組代碼如下所示:
val mapper = new ObjectMapper()
mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true)
mapper.setPropertyNamingStrategy(new PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy())
val introspectorPair = new AnnotationIntrospector.Pair(
new JacksonAnnotationIntrospector(),
new JaxbAnnotationIntrospector()
)
mapper.getSerializationConfig().withAnnotationIntrospector(introspectorPair)
val writer = mapper.defaultPrettyPrintingWriter
writer.writeValueAsString(this)
這個生成的典型JSON看起來像這樣:
{
"SalesOrder" : {
"id" : "3187e7d0-f84f-11e0-be50-0800200c9a66",
"total_paid" : 8.99,
"created_at" : "2011-05-14T00:00:00.000+0300",
"updated_at" : "2011-05-14T00:00:00.000+0300"
}
}
我的問題是:如何將根密鑰從“SalesOrder”重命名為更適合JavaScript的“sales_order”? 在我的類定義之上添加JsonProperty
覆蓋不起作用 - 可能是因為根密鑰不是嚴格的屬性(因此也沒有應用setPropertyNamingStrategy()
)?
任何關於如何實現這一點的指導感激不盡!
您可以使用JAXB注釋@XmlRootElement
(當使用JaxbAnnotationIntrospector時,你在這里),或者使用Jackson自己的@JsonRootName
(在org.codehaus.jackson.map.annotate1
)。
或者,如果您想在沒有注釋的情況下執行此操作,也可以對AnnotationIntrospector中的一個進行子類化並覆蓋findRootName(...)
方法 - 這就是要使用的名稱,通常來自注釋,但您可以實現任何自定義邏輯你要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.