Десериализация многомерного массива GSON - PullRequest
1 голос
/ 18 июня 2011

Я хочу десериализовать следующие данные json https://mtgox.com/code/data/getDepth.php. Я получаю сообщение об ошибке. Ниже мой код.

Gson gson = new Gson();  
String json =  readHTTPS(new URL("https://mtgox.com/code/data/getDepth.php"));
AskBids askBids  = gson.fromJson(json, AskBids.class);   

Мой класс AskBids выглядит следующим образом:

public class AskBids {

 private  String [] []   asks;
 private String [] []  bids;

 public AskBids(){}
}

Ошибка: get is com.google.gson.JsonParseException: ожидаемый объект найден: «asks»

Есть идеи? Спасибо

1 Ответ

3 голосов
/ 19 июня 2011

JSON, указанный в исходном вопросе, содержит более 2800 токенов JSON, имен элементов и значений. Вот небольшой раздел этого примера, который поддерживает ту же самую структуру.

{
    "asks": [
        [
            18.22,
            15.362
        ],
        [
            25.4682,
            20
        ]
    ],
    "bids": [
        [
            18.06,
            50
        ],
        [
            18.0099,
            32.64
        ]
    ]
}

Тем не менее, я скопировал и вставил код десериализации из исходного вопроса, используя как исходную версию JSON, так и более короткую версию, которую я вставил выше, и код работал без ошибок, как и ожидалось.

Основываясь на сообщении об ошибке Expecting object found: "asks", я подозреваю, что метод readHTTPS(URL) не возвращает правильный результат, поскольку он не включает открытие { JSON. Если это проблема, но по какой-то причине readHTTPS(URL) не может быть исправлено, вы всегда можете «исправить» ее вывод, просто конкатенируя пропущенные символы.

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