如何将@JsonProperty注释与包含不同格式元素的数组一起使用



我正在使用一个API,它在请求&responses-json数组,其中包含各种格式的元素,我正在努力动态地获得用于序列化/取消序列化此类数组元素的正确类。

以下是json:的简化描述

{
"parameters" :[
{
"name": "elementA",
"value": "valueOfElementAsAString"
},
{
"name": "elementB",
"value": "valueOfElementBAsString"
},
{
"name": "elementC",
"value": [
{
"label":"label1",
"size":"size1"
},
{
"label":"label2",
"size":"size2"
}
] 
}
]
}

考虑以下基本类别:

class SimpleElement {
@JsonProperty("name")
public String name;
@JsonProperty("value")
public String value;
//constructor & stuff 
}

class ComplexElement {
@JsonProperty("name")
public String name;
@JsonProperty("value")
public ArrayList<ComplexElementValue> value = new ArrayList<ComplexElementValue>();
//constructor & stuff 
}
class ComplexElementValue {
@JsonProperty("label")
public String label;
@JsonProperty("size")
public String size;  
//constructor & stuff   
}

单个简单或复杂元素的序列化/反序列化可以很好地工作,但我应该如何使用@JsonProperty声明我的类参数以正确处理整个数组?:

class Parameters {
???
}

根据我读到的内容,我觉得我必须写一个自定义的deserializer&serializer,但在这样做之前,我想确保没有更简单的方法?

目前,考虑到我有n x simpleElement和1 x complexElement,我可以使用这样一个类:

class Parameter {
@JsonProperty("parameters")
public MultiElement element;
public class MultiElement {
public ArrayList<SimpleElement> regularElements;
public ComplexElement complexElement;
}

//constructor & stuff 
}

以及处理json"的去串行化/串行化;手动";使用JsonNode库(在本例中为org.camunda.spin.json.SpinJsonNode(,但对我来说,这听起来像是一个临时解决方案

提前感谢

用于使用jackson处理动态json。

JsonNode是一个简单的节点。

公共类参数{private列表参数;//Getters和setter公共静态类参数{

private String name;
private JsonNode value;
//Getters and setters
}

}

  • 如果需要具体的类,这将正确地帮助您Jackson-在运行时在相同密钥下解析不同的模型

  • 基本上尝试使用任何在线转换器将json转换为java类http://www.jsonschema2pojo.org/

    请尝试使用modelmapper库进行对象映射。类似于将json对象映射到java对象。

    相关内容

    • 没有找到相关文章

    最新更新