Как десериализовать строку JSON между библиотекой JSON.org с помощью библиотеки GSON - PullRequest
0 голосов
/ 22 мая 2011

У меня проблема при использовании библиотеки GSON, которая является библиотекой json от Google.Надеюсь, кто-нибудь может дать мне подсказку.

Проблема в том, что я использую функцию gson.fromJson (), пытающуюся преобразовать строку json в указанный определенный класс.

Пример кода:

String jsonStr = "{name:"ABC", countries:["US"]}";  // Some Json string.
Gson gson = new Gson();
Example example = gson.fromJSON(jsonStr, Example.class);

class Example {
  // does no have no-arg constructor
  private String name;
  private Integer age;
  private JSONArray keywords;  // import org.json.JSONArray;
  private JSONArray countries;

  // other codes
}

Приведенный выше код является упрощенной версией моей проблемы.Проблема в функции fromJson ().Сообщение об ошибке гласит: «JsonParseException: Ожидаемый объект найден [« US »]».

Я не могу понять, в чем проблема.Я думаю, может быть, gson не знает, как преобразовать строку в JSONArray.Потому что здесь JSONArray из другой библиотеки (org.json).

Я пытаюсь выяснить в документах GSON.Похоже, мне нужно написать код "Instance Creator".

Мне интересно, может ли другой дать мне какое-то решение.Спасибо.

1 Ответ

1 голос
/ 22 мая 2011

Просто сделайте ключевые слова и страны типом java List. Я никогда не видел, чтобы org.json смешивался с gson. Обычно gson заменяет org.json, он не предназначен для совместного использования.

EDIT:

Маленький пример:

class Example {
   private String name;
   private Integer age;
   private List<String> keywords;
   private List<String> countries;

   public String toString() {
       return new Gson().toJson(this);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...