1. 程式人生 > >json-lib過濾屬性

json-lib過濾屬性

tor ons lean beanutils ddr getaddr nbsp rri apply

依賴jar:

commons-beanutils-1.9.3.jar?

commons-collections-3.1.jar

commons-lang-2.4.jar

commons-logging-1.2.jar

ezmorph-1.0.6.jar

json-lib-2.4-jdk15.jar

直接上程序

1、Person.java:

import java.util.List;

/**
* Created by Administrator on 2017/5/6.
*/
public class Person {
private int id;
private String name;
private List<Address> addresses;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public List<Address> getAddresses() {
return addresses;
}

public void setAddresses(List<Address> addresses) {
this.addresses = addresses;
}

@Override
public String toString() {
return "Person{" +
"id=" + id +
", name=‘" + name + ‘\‘‘ +
", addresses=" + addresses +
‘}‘;
}
}

2、Address.java:
public class Address {
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@Override
public String toString() {
return "Address{" +
"name=‘" + name + ‘\‘‘ +
‘}‘;
}
}

3、測試程序
Person person = new Person();
person.setId(1);
person.setName("xiaoming");
List<Address> addresses = new ArrayList<Address>();
Address address = new Address();
address.setName("xian");
addresses.add(address);
person.setAddresses(addresses);

//設置過濾字段  方法1 使用setJsonPropertyFilter

JsonConfig jsonConfig = new JsonConfig();
PropertyFilter filter = new PropertyFilter() {
//參數1:person對象 如果有兩個fieldName都是name,則都會被過濾,無法精確控制
public boolean apply(Object object, String fieldName, Object fieldValue) {
return fieldName.equals("name");
}
};
jsonConfig.setJsonPropertyFilter(filter);
System.out.println(JSONObject.fromObject(person, jsonConfig).toString());

//方法2 過濾id
jsonConfig.setExcludes(new String[]{"id"}); //java

說明:
這兩這種方法,如果出現多個相同屬性,設置了過濾後,會全部過濾掉,無法精確控制具體哪一個屬性。

json-lib過濾屬性