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":[{}]}