Java 为什么gson不序列化此教程代码?
下面的代码为我返回“null”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";
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。