gpt4 book ai didi

java - Google JSON,反序列化类并正确设置类字段值

转载 作者:行者123 更新时间:2023-12-02 02:41:10 27 4
gpt4 key购买 nike

如果 Gson 无法找到特定元素,那么使用 Gson 反序列化对象同时保留默认类变量值的最佳方法是什么?

这是我的例子:

public class Example {

@Expose
public String firstName;
@Expose
public String lastName;
@Expose
public int age;

//Lets give them 10 dollars.
public double money = 10;

public Example(String firstName, String lastName, int age, double money) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.money = money;
}

public String getFirstName() {
return firstName;
}

public String getLastName() {
return lastName;
}

public int getAge() {
return age;
}

public double getMoney() {
return money;
}

}

主类:

public class ExampleMain {

public static void main(String[] args) {
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
Example example = new Example("John", "Doe", 24, 10000D);
String json = gson.toJson(example);

Example example2 = gson.fromJson(json,Example.class);
System.out.println(example2.getMoney());
}

}

example2 的输出是 0.0,但不应该是 10.0,因为该类已经定义了 10.0,我知道如果我也想序列化钱,我应该使用 Expose 注释,但主要问题是如果在将来添加更多类变量并且旧对象不包含 Money,它们将返回 null、false 或 0,而不是预先设置的类值。

谢谢。

最佳答案

只需向 Exmaple 类添加一个无参数构造函数即可。它将强制 gson 开始使用 class.newInstance 来创建对象,并且您将获得类的常规初始化(包括您的情况下公共(public)变量的正确值。)

关于java - Google JSON,反序列化类并正确设置类字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45430144/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com