Какова структура JSON для чтения google-gson? - PullRequest
0 голосов
/ 10 октября 2010

Мне было интересно, учитывая следующий JSON, как я могу создать экземпляр ResultSet, который содержит Query значение ppb?

package jsontest;

import com.google.gson.Gson;

/**
 *
 * @author yccheok
 */
public class Main {

    public static class ResultSet {
        public String Query;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        final String s = "{\"ResultSet\":{\"Query\":\"ppb\"}}";
        System.out.println(s);
        Gson gson = new Gson();
        ResultSet resultSet = gson.fromJson(s, ResultSet.class);
        // {}
        System.out.println(gson.toJson(resultSet));
        // null?
        System.out.println(resultSet.Query);
    }
}

В настоящее время вот что я получаю:

{"ResultSet":{"Query":"ppb"}}
{}
null

Без изменения строки, как я могу получить правильный объект Java?

1 Ответ

2 голосов
/ 10 октября 2010

Попробуйте сначала , чтобы создать новый объект, вызовите gson.toJson(object) и посмотрите результат.

У меня нет gson, но Джексон (еще один преобразователь объекта в json)) печатает это:

{"Query":"ppb"}

Итак, вы не включаете имя класса.На самом деле, руководство пользователя gson дает пример, показывающий именно это.Посмотрите на BagOfPrimitives.

(И последнее замечание - в Java общепринятая практика заключается в том, что переменные являются строчными - т.е. query вместо Query)

Обновление Если вы действительно не можете изменить ввод json, вы можете отразить структуру следующим образом:

public static class Holder {
    public ResultSet ResultSet;
}

public static class ResultSet {
    public String Query;
}

(а затем использовать Holder h = gson.fromJson(s, Holder.class);)

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