Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么gson不序列化此教程代码?_Java_Json_Gson - Fatal编程技术网

Java 为什么gson不序列化此教程代码?

Java 为什么gson不序列化此教程代码?,java,json,gson,Java,Json,Gson,下面的代码为我返回“null” package test; import com.google.gson.Gson; class test { public static void main(String[] args) { class BagOfPrimitives { private int value1 = 1; private String value2 = "abc";

下面的代码为我返回“null”

package test;

import com.google.gson.Gson;

class test {

    public static void main(String[] args) {

        class BagOfPrimitives {
              private int value1 = 1;
              private String value2 = "abc";
              private transient int value3 = 3;
              BagOfPrimitives() {
                // no-args constructor
              }
            }

        BagOfPrimitives obj = new BagOfPrimitives();
        System.out.println(obj.value1 + obj.value2 + obj.value3);
        Gson gson = new Gson();
        System.out.println(gson.toJson(obj));


    }

}
Gson使用“封底”来确定对象结构。在这个特定示例中,类
bagofprimitions
是一个反射无法访问的local类,因此Gson无法确定其结构

而是将其设置为独立类或嵌套类。下面的嵌套类示例适用于我:

public class Test {

    public static void main(String[] args) {
        BagOfPrimitives obj = new BagOfPrimitives();
        System.out.println(obj.value1 + obj.value2 + obj.value3);
        Gson gson = new Gson();
        System.out.println(gson.toJson(obj));
    }

    static class BagOfPrimitives {
        private int value1 = 1;
        private String value2 = "abc";
        private transient int value3 = 3;
        BagOfPrimitives() {
            // no-args constructor
        }
    }

}

猜测一下:尝试将BagOfPrimitives定义为外部类而不是方法内部,并使用相同的测试类来运行创建它的代码并转换为Gson。