Spring JDBCTemplate: создание JSON без специальных символов - PullRequest
0 голосов
/ 27 мая 2019

Я читаю таблицу из базы данных postgreSQL и заполняю все столбцы и их значения в объекте json.

Один из столбцов в postgre имеет тип json.Таким образом, на выходе есть много escape-символов.как показано ниже для ключа dummykeyname.

 {
        "XY": "900144",
        "id": 1,
        "date": 1556167980000,
        "type": "XX50",
        "dummykeyname": {
            "type": "json",
            "value": "{\"XXXX\": 14445.0, \"YYYY\": 94253.0}"
        }
 }

Я хочу, чтобы вывод выглядел как

  "value": "{"XXXX": 14445.0, "YYYY": 94253.0}"

Код, который я использовал,

JSONArray entities = new JSONArray();

var rm = (RowMapper<?>) (ResultSet result, int rowNum) -> {

while (result.next()) {
    JSONObject entity = new JSONObject();
    ResultSetMetaData metadata = result.getMetaData();
    int columnCount = metadata.getColumnCount() + 1;
    IntStream.range(1, columnCount).forEach(nbr -> {
      try {
        entity.put(result.getMetaData().getColumnName(nbr), result.getObject(nbr));
      } catch (SQLException e) {
        LOGGER.error(e.getMessage());
      }
    });
    entities.add(entity);
  }
  return entities;
};

Использованная библиотека:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

Пожалуйста, покажите мне, где я ошибаюсь.

1 Ответ

0 голосов
/ 27 мая 2019

Используйте другой подход.

1) сначала создайте pojo из необходимых столбцов

  ex : if your table has 4 columns
         id, name, country, mobile create a class Employee and populate the class using rowmapper available in spring jdbc.

2) создайте класс EmployeeList, который имеет List, добавьте каждый объект Employee, созданный изrowmapper в объявленный список.

3) use

a) ObjectMapper mapper = new ObjectMapper();
b) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
c) mapper.writeValueAsString(EmployeeListobjects);
...