google-gson要读取的JSON结构是什么

时间:2010-10-10 18:40:38

标签: java json gson

我想知道,鉴于以下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

如果没有修改String,我怎样才能获得正确的Java对象?

1 个答案:

答案 0 :(得分:2)

首先尝试 以构建新对象,调用gson.toJson(object),然后查看结果。

我没有gson,但是jackson(另一个对象到json的映射器)打印出这个:

{"Query":"ppb"}

因此,您不包含类名。实际上,gson user guide给出了一个显示这一点的例子。查看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);