gpt4 book ai didi

java - 使用 gson 解析时成员字段被忽略

转载 作者:行者123 更新时间:2023-11-30 04:14:03 25 4
gpt4 key购买 nike

我正在使用 Google 的 gson 将 POJO 解析为 json图书馆。这些是涉及的对象:

// Order.java
public class Order {
// ...
private int id;
private String name;
private Location location;
// ...
}
// Location.java
public class Location {
// ...
private String address;
private float latitude;
private float longitude;
private String postcode
// ...
}

当我使用 new Gson().toJson(order) 通过 gson 运行它(确保 Location 成员变量不为空)时,我得到以下结果:

{
"id" : 1,
"name" : "nameValue"
}

但我期待得到这样的东西:

{
"id" : 1,
"name" : "nameValue",
"location" : {
"address" : "some address",
"latitude" : 53.346346,
"longitude" : -3.346363,
"postcode" : "23563"
}
}

无法弄清楚为什么会这样。有人遇到过这个吗?我可能做错了什么?

我曾尝试设置自定义类型适配器,但没有成功。

感谢您的帮助。

最佳答案

好的,我知道问题出在哪里了。我有一个模拟对象工厂,它使用 Location 类型中的匿名构造函数创建模拟对象,如下所示:

Location location = new Location() {
{
setAddress("some address");
setLatitude(53.346346);
setLongitude(-3.356363);
setPostCode("23563");
}
};

所以 Gson 将其解释为匿名类,正如文档中所说:

Fields corresponding to the outer classes in inner classes, anonymous classes, and local classes are ignored and not included in serialization or deserialization

我将其更改为按预期设置 GsonBuilder 和 iworks 的正常方式。但是我想知道是否可以使用这种启动方式,因为它确实适用于 Collections (ArrayList)。它使我的模拟工厂更易于阅读。 :)

关于java - 使用 gson 解析时成员字段被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343275/

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