У меня есть файл JSON (он содержит массив объектов JSON.) Я пытаюсь прочитать его объект за объектом. Каждый объект мне нужно преобразовать в LinkedHashMap<String,String>
, где ключ и значение являются строками. Обратите внимание, что даже если объекты JSON содержат нестроковое значение (Integer/Boolean
), я хочу, чтобы мой LinkedHashMap
содержал строку.
Это мой файл JSON (films.json
):
[
{
"name": "Fight Club",
"year": 1999,
}
]
Теперь у этого есть 1 объект. Я хочу преобразовать его в LinkedHashMap<String,String>
.
Так что для приведенного выше примера мой LinkedHashMap
должен содержать (для 1-го объекта JSON):
"name":"Fight CLub"
"year": "1999"
Обратите внимание, что год равен String
в LinkedHashMap
, а не Integer
.
Это то, что я пробовал.
Map<String, Object> myLinkedHashMap;
JsonParser jsonParser = new JsonFactory().createParser(new File("films.json"));
jsonParser = new JsonFactory().createParser(new File(filePath));
jsonParser.nextToken();
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
while(jsonParser.nextToken() != JsonToken.END_ARRAY){
myLinkedHashMap = mapper.readValue(jsonParser, LinkedHashMap.class);
}
Переменная myLinkedHashMap
будет содержать пару ключ / значение для объекта в моем файле JSON.
Но проблема в том, чтодля 'года' файла JSON я получаю Integer в LinkedHashMap, поскольку файл JSON также содержит Integer.
Вместо этого я хочу Integer
как String
в LinkedHashMap
.
Пожалуйста, помогите мне получить String
в LinkedHashMap
вместо Integer
.
Примечание. Решение должно быть общим и для других типов данных.
Таким образом, если объект JSON содержит логическое значение true
, то мой LinkedHashMap
должен содержать "true"
.