使用Java和Jackson将数组写入JSON

我需要通过从csv中读取内容来创建一个像这样的JSON结构。

[
  {
    "firstName": "John","lastName": "Smith","udas": [
      {
        "name": "UDF1","dataType": "number","value": 0
      }
    ]
  }
]

我得到的结构是

[{
    "firstName": "Michael","lastName": "Dodd"
},{
    "udas": [{
        "name": "UDF1","entityCode": 0
    }]
}]

从文件读取没有问题,但是格式化JSON是一个问题。如何消除“ udas”数组周围多余的花括号?

这是我正在使用的代码。

public class MyTestClass {
    public static void main(String[] args) {
        String row;
        String[] data = {};
        ObjectMapper objectMapper = new ObjectMapper();      

        try {
            BufferedReader csvReader = new BufferedReader(new FileReader("res/mydata.csv"));
            row = csvReader.readLine();
            data = row.split(",");

            csvReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }       

        ArrayNode arrayNode = objectMapper.createArrayNode();

        ObjectNode personObjectNode = objectMapper.createObjectNode();
        personObjectNode.put("firstName",data[0]);
        personObjectNode.put("lastName",data[1]);
        arrayNode.add(personObjectNode);

        ArrayNode udaArrayNode = objectMapper.createArrayNode();

        ObjectNode approvalAuthorityObjectNode = objectMapper.createObjectNode();
        approvalAuthorityObjectNode.put("name","UDF1");
        approvalAuthorityObjectNode.put("dataType","number");
        approvalAuthorityObjectNode.put("entityCode",Integer.parseInt(data[15]));
        udaArrayNode.add(approvalAuthorityObjectNode);

        ObjectNode udaObjectNode = objectMapper.createObjectNode();        
        udaObjectNode.putPOJO("udas",udaArrayNode);
        arrayNode.add(udaObjectNode);

        System.out.println(arrayNode.toString());    
    }
}
avril_li 回答:使用Java和Jackson将数组写入JSON

以下更改解决了该问题。谢谢,@ SotiriosDelimanolis。

public class MyTestClass{
    public static void main(String[] args) {
        String row;
        String[] data = {};
        ObjectMapper objectMapper = new ObjectMapper();      

        try {
            BufferedReader csvReader = new BufferedReader(new FileReader("res/mydata.csv"));
            row = csvReader.readLine();
            data = row.split(",");

            csvReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }       

        ArrayNode arrayNode = objectMapper.createArrayNode();

        ObjectNode personObjectNode = objectMapper.createObjectNode();
        personObjectNode.put("firstName",data[0]);
        personObjectNode.put("lastName",data[1]);
        arrayNode.add(personObjectNode);

        ArrayNode udaArrayNode = objectMapper.createArrayNode();
        ObjectNode approvalAuthorityObjectNode = objectMapper.createObjectNode();
        approvalAuthorityObjectNode.put("name","UDF1");
        approvalAuthorityObjectNode.put("dataType","number");
        approvalAuthorityObjectNode.put("entityCode",Integer.parseInt(data[15]));

        udaArrayNode.add(approvalAuthorityObjectNode);

        personObjectNode.putPOJO("udas",udaArrayNode);

        System.out.println(arrayNode.toString());    
    }
}

现在我得到了JSON

[{
    "firstName": "Michael","lastName": "Dodd","udas": [{
        "name": "UDF1","dataType": "number","entityCode": 0
    }]
}]
本文链接:https://www.f2er.com/3150539.html

大家都在问