我有一个JSON文件(它包含JSON对象数组。)
我试图逐个对象地阅读它。
我需要将每个对象都转换为键和值均为字符串的LinkedHashMap<String,String>
。请注意,即使JSON对象包含非字符串值(Integer/Boolean
),我也希望LinkedHashMap
包含字符串。
这是我的JSON文件(films.json
):
[
{
"name": "Fight Club","year": 1999,}
]
现在,它有1个对象。我想将其转换为LinkedHashMap<String,String>
。
因此对于上面的示例,我的LinkedHashMap
应该包含(对于第一个JSON对象):
“名称”:“打架”
“年”:“ 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文件的“年份”,我在LinkedHashMap中获取了Integer,因为JSON文件还包含Integer。
相反,我希望Integer
中的String
为LinkedHashMap
。
请帮助我在String
中获得LinkedHashMap
,而不是Integer
。
注意:该解决方案也应该对其他数据类型通用。
因此,如果JSON对象包含布尔值true
,那么我的LinkedHashMap
应该包含"true"
。