一、有時候在將對象或list對象轉化為json的時候,我們可能不需要所有的屬性值,這就需要我們去過濾掉這些屬性了
我下面說兩種比較流行的json包如何來忽略某些屬性值
二、 使用jaskson包
1. maven配置:
<!-- Jackson Json處理工具包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
2. 在需要忽略字段屬性上使用注解來配置:
//@JsonIgnoreProperties({"dict_id","dict_item_code"}) // 可以使用此注解放在類上忽略多個屬性值 public class BaseDict { @JsonIgnore //可以直接放在field上面表示要忽略的filed private String dict_id; private String dict_type_code; private String dict_type_name; private String dict_item_name; private String dict_item_code; private Integer dict_sort; private String dict_enable; private String dict_memo; public String getDict_id() { return dict_id; } public void setDict_id(String dict_id) { this.dict_id = dict_id; } public String getDict_type_code() { return dict_type_code; } public void setDict_type_code(String dict_type_code) { this.dict_type_code = dict_type_code; } public String getDict_type_name() { return dict_type_name; } public void setDict_type_name(String dict_type_name) { this.dict_type_name = dict_type_name; } public String getDict_item_name() { return dict_item_name; } public void setDict_item_name(String dict_item_name) { this.dict_item_name = dict_item_name; } public String getDict_item_code() { return dict_item_code; } public void setDict_item_code(String dict_item_code) { this.dict_item_code = dict_item_code; } public Integer getDict_sort() { return dict_sort; } public void setDict_sort(Integer dict_sort) { this.dict_sort = dict_sort; } public String getDict_enable() { return dict_enable; } public void setDict_enable(String dict_enable) { this.dict_enable = dict_enable; } public String getDict_memo() { return dict_memo; } public void setDict_memo(String dict_memo) { this.dict_memo = dict_memo; } }
3. 使用封裝的jsonUtils來實現操作
package com.sshcrm.utils; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; /** * CRM自定義響應結構 */ public class JsonUtils { // 定義jackson對象 private static final ObjectMapper MAPPER = new ObjectMapper(); /** * 將對象轉換成json字符串。 * <p>Title: pojoToJson</p> * <p>Description: </p> * @param data * @return */ public static String objectToJson(Object data) { try { String string = MAPPER.writeValueAsString(data); return string; } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } /** * 將json結果集轉化為對象 * * @param jsonData json數據 * @param clazz 對象中的object類型 * @return */ public static <T> T jsonToPojo(String jsonData, Class<T> beanType) { try { T t = MAPPER.readValue(jsonData, beanType); return t; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 將json數據轉換成pojo對象list * <p>Title: jsonToList</p> * <p>Description: </p> * @param jsonData * @param beanType * @return */ public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) { JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); try { List<T> list = MAPPER.readValue(jsonData, javaType); return list; } catch (Exception e) { e.printStackTrace(); } return null; } }
三、使用json-lib包
1. maven配置
<!--json-lib依賴 -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
2. 使用JsonConfig指定要忽略的屬性
public String findByTypeCode() throws IOException { //調用業務層查詢 List<BaseDict> result = baseDictService.findByTypeCode(baseDict.getDict_type_code()); //將list轉化為json /** * JSONConfig: 轉JSON的配置對象 * JSONAarray:將數組和list集合轉成JSON * JSONObject: 將對象和Map集合轉成JSON */ JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setExcludes(new String[] {"dict_sort","dict_enable","dict_memo"}); JSONArray jsonArray = JSONArray.fromObject(result, jsonConfig); //將json打印到頁面 ServletActionContext.getResponse().setContentType("text/html;charset=utf-8"); ServletActionContext.getResponse().getWriter().print(jsonArray.toString()); return NONE; }
