如下设置城市,
Response.java
public class Response {
@JsonProperty
private Map<String, String> list;
@JsonIgnore
List<String> cities = new ArrayList<>();
public Map<String, String> getList() {
return list;
}
public void setList(Map<String, String> list) {
Set<String> keys = list.keySet();
for (String key : keys) {
cities.add(list.get(key));
}
this.list = list;
}
public List<String> getCities() {
return cities;
}
public void setCities(List<String> cities) {
this.cities = cities;
}
}
测试方法
public static void main(String... args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
String json = " {\r\n" +
" \"list\" : {\r\n" +
" \"1\": \"А\",\r\n" +
" \"2\": \"B\",\r\n" +
" \"3\": \"C\",\r\n" +
" \"4\":\"D\",\r\n" +
" \"5\":\"E\"\r\n" +
" }\r\n" +
" }";
Response response = mapper.readValue(json, Response.class);
System.out.println("Object:" + mapper.writeValueAsString(response));
System.out.println("Cities:");
for (String city : response.getCities()) {
System.out.print("\t" + city);
}
}
或可以使用自定义序列化器
Response.java
@JsonSerialize(using = ResponseSerializer.class)
public class Response {
private Map<String, String> list;
List<String> cities = new ArrayList<>();
public Map<String, String> getList() {
return list;
}
public void setList(Map<String, String> list) {
this.list = list;
}
public List<String> getCities() {
return cities;
}
public void setCities(List<String> cities) {
this.cities = cities;
}
}
ResponseSerializer.java
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
public class ResponseSerializer extends StdSerializer<Response> {
public ResponseSerializer() {
this(null);
}
public ResponseSerializer(Class<Response> t) {
super(t);
}
@Override
public void serialize(Response value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeStartObject();
Map<String, String> list = value.getList();
List<String> cities = new ArrayList<>();
Set<String> keys = list.keySet();
for (String key : keys) {
cities.add(list.get(key));
}
jgen.writeObjectField("cities", cities);
jgen.writeEndObject();
}
}
测试方法
public static void main(String... args) throws Exception {
ObjectMapper mapper1 = new ObjectMapper();
Response response1=new Response() ;
Map<String, String> map=new HashMap<>();
map.put("1", "A");
map.put("2", "B");
map.put("3", "C");
response1.setList(map);
System.out.println("Object:" + mapper1.writeValueAsString(response1));
System.out.println("Cities:");
for (String city : response1.getCities()) {
System.out.print("\t" + city);
}
}