簡體   English   中英

如何將 JSON 字符串解析為 Map?

[英]How to parse JSON string into Map?

我正在使用 Java。

我有一個 JSON 字符串,如下所示:

{  
    "4562": {  
        "a":       "foo1",   
        "b":      "56",   
        "c":    "1342" 
    },
    "4563": {  
        "a":       "foo2",   
        "b":      "57",   
        "c":    "1343" 
    }
}

我想將 JSON 字符串中的所有數據存儲到 Map 中。

怎么做?

使用Gson

String json = ...;
Gson gson = new GsonBuilder.setPrettyPrinting().create();
Map<String, Map<String, String>> map = gson.<Map<String, Map<String, String>>>fromJson(json, Map.class);
System.out.println(map);

您需要使用 Jackson 庫jackson-databind )。

代碼:

import java.io.IOException;
import java.util.Map;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Example {

    public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
        ObjectMapper mapper = new ObjectMapper();
        String inputJson = "{  \n" + 
                "    \"4562\": {  \n" + 
                "        \"a\":       \"foo1\",   \n" + 
                "        \"b\":      \"56\",   \n" + 
                "        \"c\":    \"1342\" \n" + 
                "    },\n" + 
                "    \"4563\": {  \n" + 
                "        \"a\":       \"foo2\",   \n" + 
                "        \"b\":      \"57\",   \n" + 
                "        \"c\":    \"1343\" \n" + 
                "    }\n" + 
                "}";
         Map<String, Map<String, String>> map = mapper.readValue(inputJson, Map.class);
         System.out.println(map);

    }

}

Output:

{4562={a=foo1, b=56, c=1342}, 4563={a=foo2, b=57, c=1343}}

從這里下載 jar: https://repo1.maven.org/maven2/com/fasterxml/jackson/core1/jackson-databin。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM