天天看點

[json]fasterxml.jackson常用資料

環境

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);
	}

}