[英]Trying to read a JSON file into a Map using Jackson
我有一個具有這種結構的JSON文件...
{"id":"1","name":"name","categories":["category1","category2","category3"],"type":"store"}
{"id":"2","name":"name","categories":["category1","category2","category3"],"type":"store"}
沒有鍵或逗號分隔每個對象。 所以當我使用這段代碼時...
File input = new File("test.json");
ObjectMapper mapper = new ObjectMapper();
Map obj = mapper.readValue(input, Map.class);
obj變量僅在json文件中具有第一行,這是有意義的,因為它不知道鍵是什么。
我試圖像這樣包裝對象來添加一個...
{ "Key": [
{"id":"1","name":"name","categories":["category1","category2","category3"],"type":"store"},
{"id":"2","name":"name","categories":["category1","category2","category3"],"type":"store"}
] }
包括添加逗號分隔每個逗號,因為該文件沒有任何逗號分隔。
雖然這有效...
我希望完全避免這種情況,但不確定是否可以。 有沒有一種方法可以使用原始格式將json文件讀取到Map中,以便隨后可以根據需要過濾數據?
有一個簡單的解決方案,不需要修改文件。 逐行讀取文件,然后將一行輸入到ObjectMapper
。 您將獲得許多Map實例,可以將它們存儲在List,JsonArray或需要在代碼中創建的其他地圖中。 您的代碼如下所示:
ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object> list = new ArrayList<>()
try (
BufferedReader br = new BufferedReader(new FileReader(new File("test.json")))) {
String line;
while((line = br.readLine()) != null) {
Map obj = mapper.readValue(line, Map.class);
list.add(obj)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.