0

JSON を Java タイプに転送する際に問題があり、この JSON を転送したい:

{ "kind": "fusiontables#sqlresponse", "columns": [  "Pre",  "Post" ], "rows": [  [   "Si2",   "Si2"  ],  [   "CeSP-A",   "CeSP-A"  ],  [   "Si2",   "Si1"  ],  [   "Si1",   "Si2"  ],  [   "Si2",   "Si1"  ],  [   "Si1",   "Si2"  ] ]}

リストのそれぞれに2つのプライベート文字列PreとPostがあるJavaリストへ

これが私のコードです:

Gson gson = new Gson();
        List<Edges> list = gson.fromJson(jsonU,
                new TypeToken<List<Edges>>() {
                }.getType());
        for (int i = 0; i < list.size(); i++) {
            Edges p = list.get(i);
            System.out.println(p.getPre() + ", " + p.getPost());
            System.out.println();
        }

jsonU は JSON ファイルの文字列です

{ "kind": "fusiontables#sqlresponse", "columns": [  "Pre",  "Post" ], "rows": [  [   "Si2",   "Si2"  ],  [   "CeSP-A",   "CeSP-A"  ],  [   "Si2",   "Si1"  ],  [   "Si1",   "Si2"  ],  [   "Si2",   "Si1"  ],  [   "Si1",   "Si2"  ] ]}

ただし、エラーが発生しました:

 Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2

この問題を解決するのを手伝ってもらえますか? どうもありがとうございました

4

1 に答える 1

0

GSON にデシリアライズするように指示してList<Edges>いますが、渡す JSON はオブジェクト{}トークンで始まります。

GSON は、渡された型パラメーターに基づいて、次のようなものを期待しています。

[
    { "kind": .... },
    { "kind: .... },
    ...
]

言い換えれば、単一のオブジェクトに対応する JSON を渡すときに、GSON はどのようにして何かの List を構築できるのでしょうか?

于 2012-08-30T15:14:18.597 に答える