我想知道,鉴于以下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对象?
答案 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);
)