我有一个 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
in the 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
as String
in the LinkedHashMap
.
请帮我得到String
in the LinkedHashMap
代替Integer
.
注意:该解决方案也应该适用于其他数据类型。
所以如果 JSON 对象包含 booleantrue
,那么我的LinkedHashMap
应包含"true"
.