Как мне декодировать JSON с помощью GSON с этим примером? - PullRequest
2 голосов
/ 11 ноября 2010

Я новичок в 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

Я знаю этот пример его смесь массивов String и Integer.

Как мне справиться с этим ??

Спасибо ..

1 Ответ

2 голосов
/ 11 ноября 2010

Проблема в том, что вы пытаетесь преобразовать JSON в массив строк, хотя на самом деле это вообще не массив строк.

Поскольку элементы массива не имеют имен свойств,вы не можете создать нормальный класс Java для хранения этого либо.Таким образом, он должен быть десериализован как некоторый вид 2D-массива.Учитывая, что некоторые элементы являются строками, а некоторые - целыми числами, наиболее конкретным общим суперклассом является Object.

Таким образом, единственный класс массива, с которым это может работать, это Object[][].class.Я не знаю, поддерживает ли GSON гетерогенные двумерные массивы, но попробуйте это и выясните:

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

Если не удается разрешить объект, попробуйте вместо этого ввести List.class.Это , вероятно, завершится неудачей, поскольку не дает GSON никакой информации о типе, с помощью которой можно разрешить вложенные объекты, но стоит попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...