我有这样的JSON:
# "trig_cond": {
# "_and": {
# "param1": ["op", "value1"],
# "param2": ["op", "value2"], ...
# },
# "_or": {
# "param1": ["op", "value1"],
# "param2": ["op", "value2"], ...
# }
# }
"_and"/"_or"部分有数目不详的键,这些键映射到列表对象(每个对象包含两个项)。如何将其反序列化为java对象?我看过各种自定义反序列化选项,但我不明白如何在这个例子中做到json.
根据您的需求,您可以采用几种不同的选项。当您有未知数量的键时,您可以采取的最简单的解决方案之一是简单地将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;
}
}
让我知道我是否正确理解了你的问题!