0

JSONをGSONで解析しようとしていますが、コツをつかんでいると思います。私が抱えている問題は、オブジェクト名の後で解析が停止するように見えることです。

    public static void main(String[] args) throws Exception {
    Gson gson=new Gson();
    String json = "{\"k1\":\"v1\",\"k2\":\"v2\"}";
    Map<String,String> map=new HashMap<String,String>();
    map=(Map<String,String>) gson.fromJson(json, map.getClass());
    System.out.println(map.keySet());
}

正常に動作し、出力します:

[k1、k2]

そして、これらのキーを使用して、私がやりたいことである値をうまく取得できます。

json.org のこの JSON オブジェクトで同じコードを使用すると、

{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}

私が得る唯一の出力は

【用語集】

明らかに欠けているものがあるような気がします。誰かが私を正しい方向に向けるのを手伝ってもらえますか?

ありがとうございました。

4

1 に答える 1

1

JSON オブジェクト ( を含む"glossary") はMap. Java に変換できる JSON オブジェクトの例は次のMap<String, String>とおりです。

{"key1": "value1", "key2": "value2", "key3": "value3"}

ただし、JSON オブジェクトの例では、値が ではなく JSON オブジェクトである文字列キーがありString、これは に変換されませんMap<String, String>

{"key": {"anotherKey": "何らかの値"}}

Gson ホームページの例がここにあります。例を適切に逆シリアル化するには、 と の組み合わせを使用する必要がJsonParserありGsonます。例えば、

String jsonObject = "your example";
JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(jsonObject).getAsJsonObject();
JsonObject glossary = obj.get("glossary");

等...

于 2013-07-08T21:01:27.880 に答える