我正在尝试使用 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 类中的变量名称匹配。此外,我尝试过使内部类成为非静态和私有(private)的,但没有成功。据我了解,它需要是一个静态类才能使用 gson 进行序列化。有什么明显的事情表明我做错了你可以看到吗?
最佳答案
错误发生在其他地方。您传递的 String
或 Gson
很可能配置错误。我粘贴了完全相同的代码,它对我来说效果很好:
public class Main {
public static void main (String[] args) {
new A().foo("{\"bar\": \"test\"}");
}
public static 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);
System.out.println(b);
}
public static class B {
private String bar;
public String getBar(){
return bar;
}
@Override
public String toString() {
return "B{bar='" + bar + '\'' +
'}';
}
}
}
}
内部类应该可以工作,所以问题出在其他地方。这将打印出:
B{bar='test'}
关于java - 内部类的Gson到pojo序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45079877/