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