我有这样的JSON:
# "trig_cond": {
# "_and": {
# "param1": ["op", "value1"],
# "param2": ["op", "value2"], ...
# },
# "_or": {
# "param1": ["op", "value1"],
# "param2": ["op", "value2"], ...
# }
# }
“_and”/“_或”部分具有未确定数量的键,这些键映射到列表对象(每个包含两个项目)。 如何将其反序列化为java对象?我已经查看了各种自定义反序列化选项,但我不明白如何为这个例子json做这件事。
答案 0 :(得分:1)
根据您的要求,您可以选择几种不同的选项。当您拥有未知数量的密钥时,您可以采取的最简单的解决方案之一就是将POJO的这些部分保留为JSONObject。
例如,这个POJO将满足您将JSON反序列化为java对象的要求,并且仍然提供您所追求的灵活性。
public class SamplePojo {
TrigCond trig_cond;
public static class TrigCond {
JsonObject _and;
JsonObject _or;
}
}
如果您愿意,也可以将它们拆分为不同的文件。
此外,因为在您的示例中,您知道这些param1
和param2
数组元素包含哪些类型的值,您可以改为使用Map
以下是您可能更喜欢的另一个示例:
public class SamplePojo {
TrigCond trig_cond;
public static class TrigCond {
Map<String, String[]> _and;
Map<String, String[]> _or;
}
}
如果我理解你的问题,请告诉我!