簡體   English   中英

Java 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM