JSONObject属性过滤 JSON序列化属性过滤

Java用JSONObject.fromObject()或者JSONArray.fromObject()的时候因为Bean的关联会出现很多错误,很多时候,我们也不需要一个Bean中所有的属性都序列化成Json数据格式,而fromObject默认是序列化所有的,因为我们需要过滤一些不常用或者不需要的属性。

 Java |  copy code |? 
01
package com.renyiwei.wydns.struts2.action.api;
02
 
03
import java.util.HashMap;
04
import java.util.List;
05
import java.util.Map;
06
 
07
import javax.annotation.Resource;
08
 
09
import net.sf.json.JSONArray;
10
import net.sf.json.JSONObject;
11
import net.sf.json.JsonConfig;
12
import net.sf.json.util.PropertyFilter;
13
 
14
import org.springframework.context.annotation.Scope;
15
import org.springframework.stereotype.Controller;
16
 
17
import com.renyiwei.wydns.domain.Client;
18
import com.renyiwei.wydns.service.ClientService;
19
import com.renyiwei.wydns.struts2.action.common.BaseAction;
20
 
21
@Scope("prototype")
22
@Controller("apiClientAction")
23
public class ClientAction extends BaseAction<Client>{
24
  private String account;
25
  @Resource
26
  private ClientService clientService;
27
 
28
  public String getAccount() {
29
    return account;
30
  }
31
 
32
  public void setAccount(String account) {
33
    this.account = account;
34
  }
35
 
36
  private JSONObject resultObj;
37
 
38
  public JSONObject getResultObj() {
39
    return resultObj;
40
  }
41
 
42
  public void setResultObj(JSONObject resultObj) {
43
    this.resultObj = resultObj;
44
  }
45
 
46
    public String queryAjax(){
47
    List<Client> clientList = clientService.getByLoginName(this.getAccount());
48
    //建一个json序列化的配置
49
    JsonConfig config = new JsonConfig();
50
    //设置属性过滤 参数为实现了PropertyFilter接口的匿名内部类
51
    config.setJsonPropertyFilter(new PropertyFilter(){
52
      //实现apply方法
53
      public boolean apply(Object object, String property, Object value) {
54
        if(object instanceof List
55
            || object instanceof Client
56
            || object instanceof Map
57
            || object instanceof String){
58
          if(object instanceof Client ){
59
            if ("email".equals(property)
60
              || "phonenumber".equals(property)
61
              || "id".equals(property)){
62
              return false;
63
            }else{
64
              return true;
65
            }
66
          }else{
67
            return false;
68
          }
69
        }
70
        //false就是通过
71
        return true;
72
      }
73
 
74
    });
75
    Map<String, Object> resultMap = new HashMap<String, Object>();
76
    resultMap.put("result", clientList);
77
    //序列化的时候把配置的config传进去
78
    resultObj = JSONObject.fromObject(resultMap,config);
79
    return SUCCESS;
80
  }
81
}

更新:通过注解实现JSONPropertyFilter

本文出自 全栈笔记 版权所有,你可以在保留原文地址:JSONObject属性过滤 JSON序列化属性过滤 及作者的情况下到你的网站或博客。

【上一篇】
【下一篇】

您可能感兴趣的文章:

1 个回复

发表评论

您必须 登录 后才能发表评论。