java - 内部类的Gson到pojo序列化

标签 java json serialization gson

我正在尝试使用 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 进行序列化。有什么明显的事情表明我做错了你可以看到吗?

最佳答案

错误发生在其他地方。您传递的 StringGson 很可能配置错误。我粘贴了完全相同的代码,它对我来说效果很好:

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/

相关文章:

Java ArrayList 空指针异常

java - 如何在标准序列化中序列化不可序列化的基类?

java - 使用 genson 将 json 字符串反序列化为流体对象

java - 创建一个无法用NEW实例化的EJB

java - 文件/扫描仪简单解析问题

javascript - 如何创建嵌套的 json 数据?

jquery - 使用 ICanHaz 从 JSON 渲染 HTML 字符串

java - Android 中出现奇怪的 "java.io.IOException: EOF"错误

java - 为什么Java的GUI平台命名为 "Swing?"

javascript - 将 JSON 对象转换为 html 字符串