2

動的要素を含む JSON 文字列がありますが、今まではそれを解析して Map に変換しています。

Map map = new Gson().fromJson(jsonString, 
        new TypeToken<HashMap<String, String>>() {}.getType());

ここで、この状況を解決する必要があります。これらの動的変数の 1 つが、別の JSON 文字列である可能性があります。

それを解決するためのアドバイスはありますか?前もって感謝します。

編集: JSON 文字列の例が追加されました (フォーマット済み):

{
    "key1": "val1",
    "key2": "val2",
    "key3": {
        "subkey1": [
            "subvalue1",
            "subvalue1"
        ],
        "subkey‌​2": [
            "subvalue2"
        ]
    },
    "key4": "val3"
}
4

1 に答える 1

3

別のJSON文字列と呼ぶのは、単なるjsonオブジェクトです。マップ値タイプを文字列からオブジェクトに変更します:TypeToken>

String jsonString = "{\"key1\":\"val1\",\"key2\":\"val2\",\"key3\": {\"subkey1\":\"subvalue1\",\"subkey2\":\"subvalue2\"},\"key4\":\"val3\"}";

Map<String, Object> map = new Gson().fromJson(jsonString, new TypeToken<Map<String, Object>>() {
}.getType());

上記の例はGSON2.2.2で機能します。そしてsysout(map)は

{key1=val1, key2=val2, key3={subkey1=subvalue1, subkey2=subvalue2}, key4=val3}

小さな改善として、マップタイプパラメータを明示的に指定し、TypeTokenにHashMapの代わりにMapを使用することをお勧めします。

于 2012-08-31T13:02:12.353 に答える