2

私はGSONの初心者です。これは私の例です

[["a","b","c"],[1,2,3],[4,5,6]]

配列に分割したい。私はこのコードを試します

String test = "[ [\"a\",\"b\",\"c\"],[1,2,3]]";
String[] column = gson.fromJson(test, String[].class);

動作しません...そしてエラーが発生します。

The JsonDeserializer StringTypeAdapter failed to deserialized json object ["a","b","c"] given the type class java.lang.String
com.google.gson.JsonParseException: The JsonDeserializer StringTypeAdapter failed to deserialized json object ["a","b","c"] given the type class java.lang.String

この例では、文字列配列と整数配列が混在していることを知っています。

これにどう対処するのですか??

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

4

1 に答える 1

2

問題は、実際には文字列の配列ではないのに、JSON を文字列の配列に変換しようとしていることです。

配列要素にはプロパティ名がないため、これを格納する通常の Java クラスを作成することもできません。したがって、ある種の 2D 配列としてデシリアライズする必要があります。一部の要素が文字列であり、一部が整数であることを考えると、最も具体的な一般的なスーパークラスはObject.

したがって、これがそのまま機能する唯一の配列クラスですObject[][].class。GSON が異種の 2D 配列をサポートしているかどうかはわかりませんが、これを試してみてください。

String[] column = gson.fromJson(test, Object[][].class);

これでオブジェクトを解決できない場合は、List.class代わりに渡してみてください。ネストされたエンティティを解決するための型情報が GSON に提供されないため、これはおそらく失敗しますが、試してみる価値はあります。

于 2010-11-11T10:41:15.867 に答える