Разбор JSON через Java - массив с ключом-> значением формата - PullRequest
2 голосов
/ 11 ноября 2011

У меня проблема с использованием gson (JSon Java-библиотека от Google).

Я должен проанализировать результат следующим образом:

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 28 Oct 2000 16:46:01 GMT
Content-Type: text/plain
Connection: keep-alive
Content-Length: 217

{
  "key_1":"value_1",
  "key_2":"value_2",
  "key_3": [
    {
      "key_3_1":"value_3_1",
      "key_3_2":0,
      "key_3_3":1
    }
  ]
}

Я написал этот класс:

import java.util.List;

public class ObjectClass {
    private String key_1;
    private String key_2;
    private List<SubArray> key_3;

    public static class SubArray {
        private String key_3_1;
        private boolean key_3_2;
        private boolean key_3_3;
    }

    public void printList() {
        System.out.println("Size: " + key_3.size());
    }
}

и в MainClass у меня есть:

Gson gson = new Gson();
ObjectClass obj = gson.fromJson(br, ObjectClass.class);

где br это буферизованный ридер, который содержит буфер запрошенной веб-страницы.Парсинг key_1 и key_2 работает нормально, но парсинг key_3 даунс работает.У вас есть предложение?

Спасибо!

Ответы [ 2 ]

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

Вероятно, он не распознает 0 и 1 как boolean значения. Попробуйте вместо этого заменить SubArray на int или напишите свой собственный десериализатор, как описано здесь: GSON False в верхнем регистре

1 голос
/ 11 ноября 2011

Изменить некоторые типы в SubArray.

public static class SubArray {
    private String key_3_1;
    private int key_3_2;
    private int key_3_3;
}

Следующий код показывает, что key_3 анализируется правильно.

public void printList() {
    System.out.println("Size: " + key_3.size());
    System.out.println("key_3_1: " + key_3.get(0).key_3_1);
    System.out.println("key_3_2: " + key_3.get(0).key_3_2);
    System.out.println("key_3_3: " + key_3.get(0).key_3_3);
}

Результат:

Size: 1
key_3_1: value_3_1
key_3_2: 0
key_3_3: 1
...