Сериализация строки json без экранирования кавычки в Java

#java #json #jackson

#java #json #джексон

Вопрос:

У меня есть строковая переменная, которая содержит json списка строк. И я хочу добавить это как значение к карте для представления в виде значения списка строк. Чтобы быть более конкретным:

 String jsonListString = "["A", "B"]";
Map<String, String> map = new HashMap();
map.put("KEY", jsonListString);


String serialized = new ObjectMapper().writeValueAsString(map);
System.out.println("Example:"   serialized);
  

Результат следующий:

 Example:{"KEY":"["A", "B"]"}
  

Я ожидаю, что без экранирования кавычек

 Example:{"KEY":["A", "B"]}
  

Ответ №1:

В настоящее время вы присваиваете строку в качестве значения ключу. Если вы хотите назначить массив вместо этого, он должен фактически быть массивом.

Пример

 Map<String, String[]> map = new HashMap();
map.put("KEY", new String[]{"A", "B"});
  

Комментарии:

1. Спасибо за ваш ответ! Кстати, я беру строку json в качестве входных данных, так есть ли способ сделать это без необходимости разбора входного json?

2. Если вы сериализовали объект, который был аннотируемым, вы могли бы использовать @JsonRawValue. Однако, поскольку вы сериализуете карту, я не уверен, можете ли вы указать Джексону, чтобы он не цитировал вещи. Может быть, вы можете использовать mixin, я не уверен.