Json-lib教程(三) JsonConfig

1.過濾屬性

java beanjson對象的時候,不少沒必要要屬性的能夠過慮掉,有以下兩種方式:java

第一種:咱們可使用JsonConfig.setExcludes()方法json

@Test
	public void excludesPropertyTest() {
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setExcludes(new String[] { "hobby", "dob" });
		Student stud = new Student("Sriram", "Kasireddi", 2, "Singing", new Date(110, 4, 6));
		JSONObject jsonObject = JSONObject.fromObject(stud, jsonConfig);
		System.out.println(jsonObject.toString(2));
	}

運行結果:app

{
  "age": 2,
  "firstName": "Sriram",
  "lastName": "Kasireddi"
}

第二種:使用PropertyFilteride

@Test
	public void excludesPropertyByFilterTest() {
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setJsonPropertyFilter(new PropertyFilter() {

			@Override
			public boolean apply(Object source, String name, Object value) {
				// TODO Auto-generated method stub
				if ("hobby".equals(name) || "dob".equals(name)) {
					return true;
				}
				return false;
			}
		});
		Student stud = new Student("Sriram", "Kasireddi", 2, "Singing", new Date(110, 4, 6));
		JSONObject jsonObject = JSONObject.fromObject(stud, jsonConfig);
		System.out.println(jsonObject.toString(2));
	}

運行結果:this

{
  "age": 2,
  "firstName": "Sriram",
  "lastName": "Kasireddi"
}

以上爲咱們使用兩種方法過濾掉了Student類的hobbydob屬性。code

2.bean按照指定格式轉換爲json格式

咱們將Student類中的Date類型的屬性,按照yyyy_MM_dd格式轉化爲jsonorm

@Test
	public void valueProcessorTest() {
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.registerJsonValueProcessor("dob", new JsonValueProcessor() {

			@Override
			public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
				Date date = (Date) value;
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd");
				sdf.format(date);
				return sdf.format(date);
			}

			@Override
			public Object processArrayValue(Object value, JsonConfig jsonConfig) {
				// TODO Auto-generated method stub
				return null;
			}
		});

		Student stud = new Student("Sriram", "Kasireddi", 2, "Singing", new Date(100, 4, 6));
		JSONObject jsonObject = JSONObject.fromObject(stud, jsonConfig);
		System.out.println(jsonObject.toString(2));
		
	}

運行結果:對象

{
  "age": 2,
  "dob": "2000_05_06",
  "firstName": "Sriram",
  "hobby": "Singing",
  "lastName": "Kasireddi"
}

3.動態改變屬性名稱

Studen類的firstName屬性轉爲json後變爲xxooget

@Test
	public void propertyProcessorTest() {
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setExcludes(new String[] { "dob" });
		jsonConfig.registerJsonPropertyNameProcessor(Student.class, new PropertyNameProcessor() {

			@Override
			public String processPropertyName(Class beanClass, String name) {
				if ("firstName".equals(name)) {
					return "xxoo";
				}
				return name;
			}
		});

		Student stud = new Student("Sriram", "Kasireddi", 2, "Singing", new Date(110, 4, 6));
		JSONObject jsonObject = JSONObject.fromObject(stud, jsonConfig);
		System.out.println(jsonObject.toString(2));
	}

運行結果:ast

{
  "age": 2,
  "xxoo": "Sriram",
  "hobby": "Singing",
  "lastName": "Kasireddi"
}

最後附上Student

package json712.study_json;

import java.util.Date;

public class Student {
	private String firstName;
	private String lastName;
	private int age;
	private String hobby;
	private Date dob;

	public Student() {
	}

	public Student(String firstName, String lastName, int age, String hobby, Date dob) {
		super();
		this.firstName = firstName;
		this.lastName = lastName;
		this.age = age;
		this.hobby = hobby;
		this.dob = dob;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getHobby() {
		return hobby;
	}

	public void setHobby(String hobby) {
		this.hobby = hobby;
	}

	public Date getDob() {
		return dob;
	}

	public void setDob(Date dob) {
		this.dob = dob;
	}

	public String toString() {
		return "Student[ " + "firstName = " + firstName + ", lastName = " + lastName + ", age = " + age + ", hobby = "
				+ hobby + ", dob = " + dob + " ]";
	}
}
相關文章
相關標籤/搜索