Java Jackson用根条目 Package 现有json

4ngedf3f  于 2022-11-23  发布在  Java
关注(0)|答案(1)|浏览(85)

我是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);

我输出是:

{
        "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": ""
            },
            ....
r3i60tvu

r3i60tvu1#

Jackson ObjectNode表示JSON对象{}。要添加属性,您可以调用set(String,JsonNode)来添加另一个节点(对象、数组或简单值),也可以调用putPOJO(String,Object)。POJO代表Plain Old Java Object,此调用会将您的List<RigaAnamnesi>类解释为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));

相关问题