#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, я не уверен.