Jackson JSON从没有属性名称的对象数组转换为pojo

时间:2019-02-06 14:55:04

标签: java jackson

考虑到这种结构,在父属性中获取对象数组(属性,类型字段)的正确表示法是什么。

{"parent":
          [
            {"property":[2,5],"type":2},
            {"property":[1,2],"type":1},
            {"property":[4,0],"type":0}
          ],
 "prop2":"something"
}

当前的Java看起来像

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Parent{
       <WHAT TO PUT HERE??>
       List<PropertyTypeObj> propertyTypes;
    }

这是类似以下内容的一部分:

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Container{

        @JsonProperty("parent")
        List<Parent> parent;
        @JsonProperty("prop2")
        String prop2
    }

解决方案是绕过父元素的创建,而是使用 PropertyTypeObject 本身

@JsonInclude(JsonInclude.Include.NON_NULL)
        public class Container{

            @JsonProperty("parent")
            List<PropertyTypeObject> properties;
            @JsonProperty("prop2")
            String prop2
        }

然后将PropertyTypeObject指定为具有@JsonRootName("parent")

为清楚起见,请参阅批准的答案。

1 个答案:

答案 0 :(得分:4)

可能的类结构如下:

public class External {
   private List<External.Internal> parent;
   private String prop2; 

   @JsonRootName("parent")
   public static class Internal {
     private List<Integer> property;
     private Integer type;
   }
}

外部类具有的地方:

  • 父级属性,它是内部元素的列表(json中的数组)
  • 字符串类型的
  • prop2 属性

以及一个针对每个元素具有的内部类:

  • 整数类型List(json中的数组)的属性属性
  • 整数类型的 type 属性