Java 在Jackson中创建数组的空列表

Java 在Jackson中创建数组的空列表,java,arrays,json,jackson,json-serialization,Java,Arrays,Json,Jackson,Json Serialization,我正在使用Jackson将JSON对象序列化和反序列化到POJO-s,以及从POJO-s进行序列化和反序列化 我试图创建的元素之一是数组列表(我想这就是所谓的数组) 我试过: public ArrayList<String> Images = new ArrayList<String>(); 然后,我尝试将其作为字符串数组的列表: public ArrayList<String[]> Images = new ArrayList<String[]>

我正在使用
Jackson
JSON
对象序列化和反序列化到
POJO
-s,以及从
POJO
-s进行序列化和反序列化

我试图创建的元素之一是数组列表(我想这就是所谓的数组)

我试过:

public ArrayList<String> Images = new ArrayList<String>();
然后,我尝试将其作为字符串数组的列表:

public ArrayList<String[]> Images = new ArrayList<String[]>();
但这给了我:

"Images":[
     []
],

如何获得所需的格式?

您描述的是一个对象列表,即:

public ArrayList<yourObject> Images = new ArrayList<yourObject>();
如果需要阵列列表,可以执行以下操作:

public ArrayList<ArrayList<yourObject> Images = new ArrayList<ArrayList<yourObject>();

JSON
非原语在
Java
中可以表示为:

  • JSON数组
    -
    []
    =>
    java.util.List
    或数组
  • JSON对象
    -
    {}
    =>
    java.util.Map
    POJO
  • 如果需要空的
    JSON对象
    ,则可以使用空映射或空的
    POJO
    -
    POJO
    而不使用属性,或者将所有属性设置为
    null
    ,并将
    ObjectMapper
    设置为忽略
    null
    -s

    生成所需输出的简单示例如下所示:

    import com.fasterxml.jackson.annotation.JsonProperty;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
    
    public class JsonApp {
    
        public static void main(String[] args) throws Exception {
            ObjectMapper mapper = new ObjectMapper();
    
            String json = mapper.writeValueAsString(new Root());
            System.out.println(json);
        }
    
    }
    
    class Root {
    
        private static final List<Map<String, Object>> EMPTY_MAP_IN_ARRAY = Collections.singletonList(Collections.emptyMap());
    
        @JsonProperty("Images")
        private List<Map<String, Object>> images = EMPTY_MAP_IN_ARRAY;
    
        public List<Map<String, Object>> getImages() {
            return images;
        }
    
        public void setImages(List<Map<String, Object>> images) {
            this.images = images;
        }
    }
    
    public ArrayList<yourObject> Images = new ArrayList<yourObject>();
    
    "Images": [
    {}
    ]
    
    public ArrayList<ArrayList<yourObject> Images = new ArrayList<ArrayList<yourObject>();
    
        "Images":[
         []
         ]
    
    import com.fasterxml.jackson.annotation.JsonProperty;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
    
    public class JsonApp {
    
        public static void main(String[] args) throws Exception {
            ObjectMapper mapper = new ObjectMapper();
    
            String json = mapper.writeValueAsString(new Root());
            System.out.println(json);
        }
    
    }
    
    class Root {
    
        private static final List<Map<String, Object>> EMPTY_MAP_IN_ARRAY = Collections.singletonList(Collections.emptyMap());
    
        @JsonProperty("Images")
        private List<Map<String, Object>> images = EMPTY_MAP_IN_ARRAY;
    
        public List<Map<String, Object>> getImages() {
            return images;
        }
    
        public void setImages(List<Map<String, Object>> images) {
            this.images = images;
        }
    }
    
    {"Images":[{}]}