Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java和Jackson将数组写入JSON_Java_Json_Jackson - Fatal编程技术网

使用Java和Jackson将数组写入JSON

使用Java和Jackson将数组写入JSON,java,json,jackson,Java,Json,Jackson,我需要通过从csv读取来创建一个类似这样的JSON结构 [ { "firstName": "John", "lastName": "Smith", "udas": [ { "name": "UDF1", "dataType": "number", "value": 0 } ] } ] 我得到的结构是 [{ "firstName": "Michael", "lastNa

我需要通过从csv读取来创建一个类似这样的JSON结构

[
  {
    "firstName": "John",
    "lastName": "Smith",
    "udas": [
      {
        "name": "UDF1",
        "dataType": "number",
        "value": 0
      }
    ]
  }
]
我得到的结构是

[{
    "firstName": "Michael",
    "lastName": "Dodd"
}, {
    "udas": [{
        "name": "UDF1",
        "dataType": "number",
        "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());    
    }
}

以下更改修复了该问题。谢谢,@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
    }]
}]

为什么要将
uda
添加到新的
ObjectNode
,并将其添加到
arrayNode
?您应该将其添加到
PersonObject节点
。我不确定是否遵循了此操作。是
ObjectNode UDAOObjectNode=objectMapper.createObjectNode()您所指的语句?如果我更改
arrayNode.add(udaObjectNode)
arrayNode.add(udaObjectNode)我得到了一个JSON,它只复制了第一部分
[{“firstName”:“Michael”,“lastName”:“Dodd”},{“firstName”:“Michael”,“lastName”:“Dodd”}]
。去掉代码的整个
udaObjectNode
部分,只需
personObjectNode.putPOJO(“udas”,udaArrayNode)