![](/img/trans.png)
[英]SerializationFeature.WRAP_ROOT_VALUE as annotation in jackson json
[英]Java Jackson wrap an existing json with a root entry
我是 fasterxml.jackson 庫的新用戶。 我需要幫助來了解如何使用該庫。 我有一個從字符串生成的數組,我需要將其包含到根節點中,但我不明白該怎么做。
我的代碼是:
class RigaAnamnesi {
int codRiga;
String testo;
boolean domandaSiNo;
Integer sub = 0;
String spiegazione = "Spiegazione di prova";
}
ArrayList<RigaAnamnesi> vArray = fillArray();
String json = mapper.writeValueAsString(vArray);
JsonNode parsedJson = mapper.readTree(json);
ArrayNode outerArray = mapper.createArrayNode();
ObjectNode outerObject = mapper.createObjectNode();
outerObject.putPOJO("domande", parsedJson);
outerArray.add(outerObject);
File f = Paths.get("anamnesi.json").toFile();
mapper.writeValue(f, outerArray);
我的 output 是:
{
"domande": [
{
"codRiga": 1,
"testo": "Malattie del sangue e problemi di coagulazione_",
"domandaSiNo": true,
"sub": 0,
"spiegazione": "Spiegazione di prova"
},
{
"codRiga": 2,
"testo": "Malattie endocrine (es.Diabete, Osteoporosi)___ ",
"domandaSiNo": true,
"sub": 0,
"spiegazione": "Spiegazione di prova"
},
{
"codRiga": 3,
"testo": "Malattie cardiache e vascolari_",
"domandaSiNo": true,
"sub": 0,
"spiegazione": "Spiegazione di prova,"
},
...
但我需要包含到一個新的根目錄中:
{
"anamnesi": {
"domande": [
{
"codRiga": 1,
"testo": "Malattie del sangue e problemi di coagulazione_",
"domandaSiNo": true,
"sub": 0,
"spiegazione": ""
},
....
Jackson ObjectNode 代表一個 JSON object {}
。 要添加屬性,您可以調用set(String, JsonNode)添加另一個節點(對象、數組或簡單值),也可以調用putPOJO(String, Object) 。 POJO 代表 Plain Old Java Object,此調用會將您的List<RigaAnamnesi>
class 解釋為 JSON 對象的數組。
要獲得所需的結構,您不需要先將數組打印為字符串。 相反,您可以創建兩個對象並使用 putPOJO,然后使用 set:
List<RigaAnamnesi> vArray = ...;
ObjectNode domande = mapper.createObjectNode();
// use putPOJO to make sure jackson converts the POJO to JsonNodes
domande.putPOJO("domande", vArray);
// this is the parent we will print
ObjectNode anamnesi = mapper.createObjectNode();
// use set, since domande already is a JsonNode
anamnesi.set("anamnesi", domande);
System.out.println(mapper.writeValueAsString(anamnesi));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.