Java 如何将字符串列表反序列化为单个参数值类?

Java 如何将字符串列表反序列化为单个参数值类?,java,jackson,deserialization,jackson-databind,Java,Jackson,Deserialization,Jackson Databind,基本上,我总是想将我的Id类展开到父对象,但是如果有列表,我不能使用jackson库中的JsonUnwrapped注释 @lombok.Value 公众课堂反应{ 列出ID; //……其他领域 } @龙目山价值 公共类MyId{ 字符串id; } { “ID”:[“id1”、“id2”] “其他字段”:{} } 使用jackson databind 2.11的工作解决方案 @lombok.Value 公共类MyId{ @JsonValue 字符串id; 公共MyId(最终字符串id){ th

基本上,我总是想将我的Id类展开到父对象,但是如果有列表,我不能使用jackson库中的JsonUnwrapped注释

@lombok.Value
公众课堂反应{
列出ID;
//……其他领域
}
@龙目山价值
公共类MyId{
字符串id;
}
{
“ID”:[“id1”、“id2”]
“其他字段”:{}
}
使用jackson databind 2.11的工作解决方案

@lombok.Value
公共类MyId{
@JsonValue
字符串id;
公共MyId(最终字符串id){
this.id=id;
}
}

您可以使用
@JsonValue
。发件人:

标记注释,指示带注释的访问器的值(字段或“getter”方法[具有非void返回类型的方法,无参数])将用作实例序列化的单个值,而不是收集值属性的常规方法。值通常是简单的标量类型(字符串或数字),但它可以是任何可序列化类型(集合、映射或Bean)

用法:

@Value
公共类MyId{
@JsonValue
字符串id;
}
完整代码:

公共类Jacksone示例{
公共静态void main(字符串[]args)引发JsonProcessingException{
ObjectMapper ObjectMapper=新的ObjectMapper();
List myid=new ArrayList();
MyId id1=新的MyId(“一”);
MyId id2=新的MyId(“两个”);
myIds.add(id1);
myIds.add(id2);
响应=新响应(myid,“其他字段值”);
System.out.println(objectMapper.writeValueAsString(response));
}
}
@价值观
班级反应{
列出ID;
字符串字段;
}
@价值观
类MyId{
@JsonValue
字符串id;
}
输出:

{
  "ids": [
    "one",
    "two"
  ],
  "otherField": "some other field value"
}

谢谢,我试过了。在我为类手动创建了构造函数之后,它按预期工作