【发布时间】:2017-07-13 11:54:43
【问题描述】:
我正在尝试使用 Gson 的能力将 json 转换为 POJO。我让它与序列化类一起工作,作为一个单独的包中的一个类,但现在我试图让序列化类成为调用它的类的内部类,就像我在下面描述的那样。
public class A {
private final Gson gson;
public A() {
gson = new GsonBuilder().serializeNulls().create();
}
public void foo(String json){
B b = gson.fromJson(json, B.class);
}
public static class B {
private String bar;
public String getBar(){
return bar;
}
}
}
示例 JSON:
{"bar": "test"}
此设置为内部类变量返回空值;在这种情况下,只是吧。在本例中,我已确保传入的 json 与 B 类中的变量名称相匹配。此外,我尝试过使内部类成为非静态和私有的,但没有成功。据我了解,它需要是一个静态类才能使用 gson 对其进行序列化。有什么明显的事情表明我做错了,你可以看到吗?
【问题讨论】:
-
可能是您缺少 bar 的二传手吗?你能发布一个示例 JSON 吗?
-
没想到是因为这些是我在单独的包而不是内部类中工作时所拥有的确切类。无论如何,继续尝试并没有任何运气。我将编辑我的帖子以添加示例 JSON。
-
你为什么要把
gson作为foo函数的一个参数,而所有发生的事情就是它会立即被覆盖? -
我实际上在我的代码中的其他地方也发生过这种情况,我只是添加了它以显示它被设置的内容,因为正如我发现早期的问题,它必须有
serializeNulls()方法在其中
标签: java json serialization gson