Запись массива в JSON с использованием Java и Джексона - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно создать структуру JSON, которая выглядит следующим образом, читая из CSV.

[
  {
    "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());    
    }
}

1 Ответ

0 голосов
/ 07 ноября 2019

Следующее изменение устранило проблему. Спасибо, @ 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
    }]
}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...