gpt4 book ai didi

java - 如何使用多个同名的 JSON 字段

转载 作者:行者123 更新时间:2023-12-01 08:52:18 28 4
gpt4 key购买 nike

我想为每个字段使用两种不同类型的适配器,这是使用 GSON 2.7。

我收到错误“类声明了多个名为 type 的 JSON 字段”

public abstract class Vehicle 
{
@SerializedName("type")
@JsonAdapter(VehicleTypeAdapter.class)
protected String type;
}
public class Car extends Vehicle
{
@SerializedName("type")
@JsonAdapter(CarTypeAdapter.class)
protected CarType carType;
}

如何避免这个错误?我尝试使用 transient 但它不起作用。

最佳答案

正如错误所示,用于序列化字段的名称不能有重复的实例。

但是,您似乎并没有尝试定义两个单独的字段,而是尝试在 Car 中创建更具体的 type 实现 类。

不幸的是,通过使用extends,您添加Vehicle抽象类,而不是实现类型的特定实例 code>,因此您无法更改继承字段的定义。



因此,您似乎有几个选择:




  • 完全删除 CarType,只使用从父类(super class)继承的 String 类型


  • 如果 CarType 对您的实现很重要,您可以将 String type 更改为 VehicleTypevehicleType 并拥有 CarType 继承自 VehicleType,仍然从 Car 子类中删除重复字段。




这意味着您只有 1 个 @JsonAdapter,因此只有在创建通用 TypeAdapter.class 是可能的解决方案时,此选项才有效。




  • 如果您确实必须重新定义该字段,则必须将 Vehicle 转换为接口(interface),以便您可以在更具体的范围内隐藏/重新定义。不确定这是否适合您的应用程序。








关于java - 如何使用多个同名的 JSON 字段,我们在Stack Overflow上找到一个类似的问题:

https://stackoverflow.com/questions/42310122/




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