环境
jackson-databind 2.4.4(用于spring mvc 3.2.11)
该工具类能解决的问题:
1.名称能通过JsonProperties修改
2.可以控制空值属性是否显示
3.可以忽略指定属性是否显示
package test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
//最外层加上“user”包裹
//Deserial时需配合ObjectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true)使用
//Serial时需配合ObjectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true)使用
@JsonRootName(value = "user")
// 包含属性类型
@JsonInclude(Include.NON_NULL)
// 忽略的属性
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
public String toString() {
return "name:" + name + ",age:" + age;
}
@JsonProperty(value = "BaseName")
String name;
int age;
List<Map<String, Object>> mylist = new ArrayList<Map<String, Object>>();
Map<String, Object> mymap;
public String getName() {
return name;
}
public List<Map<String, Object>> getMylist() {
return mylist;
}
public void setMylist(List<Map<String, Object>> mylist) {
this.mylist = mylist;
}
public Map<String, Object> getMymap() {
return mymap;
}
public void setMymap(Map<String, Object> mymap) {
this.mymap = mymap;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package test;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class JsonTest {
public static void main(String[] args) throws Exception {
ObjectMapper om = new ObjectMapper();
String s = "{\"user\":{\"age\":111,\"BaseName\":\"你好\"}}";
om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
User user1 = om.readValue(s, User.class);
System.out.println(user1);
User user2 = new User();
user2.setAge(23);
user2.setName("你好");
om.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
String str = om.writeValueAsString(user2);
System.out.println(str);
}
}