0

我想知道,给定以下 JSON,我如何生成一个带有value的ResultSet实例?Queryppb

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 对象?

4

1 回答 1

2

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

我没有 gson,但是 jackson(另一个 object-to-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);

于 2010-10-10T18:47:54.883 回答