【发布时间】:2020-03-19 17:10:07
【问题描述】:
我正在将一个对象上传到服务器,并且“值”字段接受字符串、整数和布尔值。
这是 @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;
}
我发现的大多数 stackoverflow 结果都用于序列化整个对象或反序列化。我的一些想法是..
- 是否可以从三个值字段中删除@SerializedName,只序列化不为空的值?
- 我能否在 java 中构建某种可选的数据类型对象,该对象是基于具有值的数据类型设置的?
这个对象是一个更大的对象的一部分,并且 subitems 对象对它有相当多的深度,就像一个注释一样。我希望这是某个问题的重复,但到目前为止我一直无法找到它。
编辑:
这是我发现的最接近的问题,虽然我不想像这个人那样自定义序列化整个对象,因为在这个传出的 json 中可能有 40-100 个这样的对象 gson-same-field-name-different-types-serialize
我还发现我不能动态设置@SerializedValue 属性 is-it-possible-to-pass-method-parameter-to-annotation-on-a-method?
第三次编辑:让我知道我是否应该删除这些多余的部分。我正在尝试实施这种方法 - inner serialization - 这个答案虽然很老,但现在很难做。
【问题讨论】:
-
你试过
private Object value;吗? -
哇是的,这很有效,这看起来像是我看过的一些基本的 Java 编程概念。我可以删除这个问题,或者如果您想将此作为答案发布,我会清理我的问题并将您的问题标记为正确。谢谢!
-
如果您认为看到此问题的答案对其他人有帮助,您可以自行回答,否则直接删除。如果您自行回答并且其他人觉得它有用,您可能会获得 Self-Learner 徽章。
标签: java android serialization gson