一个 @SerializedName 允许多种数据类型
One @SerializedName allowing for multiple datatypes
我正在将对象上传到服务器,"value" 字段接受字符串、整数和布尔值。
这是 @SeralizedName 应用明显失败的模型。
public class InspectionFormItems {
@SerializedName("id")
private Integer id;
@SerializedName("type")
private String type;
@SerializedName("value")
private String stringValue;
@SerializedName("value")
private boolean boolValue;
@SerializedName("value")
private int intValue;
@SerializedName("name")
private String name;
@SerializedName("children")
ArrayList<ArrayList<InspectionFormItems>> subitems;
}
我发现的大多数 Whosebug 结果都是针对序列化整个对象或反序列化的。我的一些想法是..
- 是否可以从三个值字段中删除@SerializedName 并仅序列化非空值?
- 我可以在 java 中构建某种基于具有值的数据类型设置的可选数据类型对象吗?
这个对象是一个更大对象的一部分,subitems 对象有相当的深度,就像一个音符一样。我希望这是某个问题的重复,到目前为止我一直找不到它。
编辑:
这是我发现的最接近的问题,尽管我不想像这个人那样自定义序列化整个对象,因为在这个传出的 json 中可能有 40-100 个这样的对象
我还发现我无法动态设置@SerializedValue 属性
is-it-possible-to-pass-method-parameter-to-annotation-on-a-method?
第 3 次编辑:让我知道是否应该删除一堆多余的内容。我正在尝试实施此方法 - inner serialization - 这个答案虽然很旧但现在很难实现。
感谢 Andreas 的回答。
使用 Object,我能够避免预定义变量。
@SerializedName("value")
private Object value;
这让我可以同时传递 String、Integer 或 boolean值字段。
我正在将对象上传到服务器,"value" 字段接受字符串、整数和布尔值。
这是 @SeralizedName 应用明显失败的模型。
public class InspectionFormItems {
@SerializedName("id")
private Integer id;
@SerializedName("type")
private String type;
@SerializedName("value")
private String stringValue;
@SerializedName("value")
private boolean boolValue;
@SerializedName("value")
private int intValue;
@SerializedName("name")
private String name;
@SerializedName("children")
ArrayList<ArrayList<InspectionFormItems>> subitems;
}
我发现的大多数 Whosebug 结果都是针对序列化整个对象或反序列化的。我的一些想法是..
- 是否可以从三个值字段中删除@SerializedName 并仅序列化非空值?
- 我可以在 java 中构建某种基于具有值的数据类型设置的可选数据类型对象吗?
这个对象是一个更大对象的一部分,subitems 对象有相当的深度,就像一个音符一样。我希望这是某个问题的重复,到目前为止我一直找不到它。
编辑:
这是我发现的最接近的问题,尽管我不想像这个人那样自定义序列化整个对象,因为在这个传出的 json 中可能有 40-100 个这样的对象
我还发现我无法动态设置@SerializedValue 属性 is-it-possible-to-pass-method-parameter-to-annotation-on-a-method?
第 3 次编辑:让我知道是否应该删除一堆多余的内容。我正在尝试实施此方法 - inner serialization - 这个答案虽然很旧但现在很难实现。
感谢 Andreas 的回答。
使用 Object,我能够避免预定义变量。
@SerializedName("value")
private Object value;
这让我可以同时传递 String、Integer 或 boolean值字段。