|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1729580
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2019/6/27 17:19 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼]ALiBABa fastjson 去除 JSON 對像不需要的屬性字段
ALiBABa fastjson去除JSON對像不需要的屬性字段 引入包: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject;
TEST測試用例: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") public class JsonTest { @Test public void testJson() { /* JSONObject json=new JSONObject(); json.put("dd", "ss"); json.put("mm", "ss"); System.out.println("====1"+json.toJSONString()); json.remove("mm"); System.out.println("====1"+json.toJSONString()); */ DataObject obj=new DataObject(); System.out.println(obj.toString()); JSONObject jsonObject=JSON.parseObject(obj.toString()); System.out.println("====all attributes:"+jsonObject.toJSONString()); jsonObject.remove("num1"); System.out.println("====remove num1"+jsonObject.toJSONString()); jsonObject.remove("num3"); System.out.println("====remove num3"+jsonObject.toJSONString()); } public class DataObject implements Serializable { public int num1=0; public int num2=0; public double num3=0.0; public double num4=0.0; public int getNum1() { return num1; } public void setNum1(int num1) { this.num1 = num1; } public int getNum2() { return num2; } public void setNum2(int num2) { this.num2 = num2; } public double getNum3() { return num3; } public void setNum3(double num3) { this.num3 = num3; } public double getNum4() { return num4; } public void setNum4(double num4) { this.num4 = num4; } @Override public String toString() { String s="{"; s+="\"num1"+"\":"+"\""+num1+"\","; s+="\"num2"+"\":"+"\""+num2+"\","; s+="\"num3"+"\":"+"\""+num3+"\","; s+="\"num4"+"\":"+"\""+num4+"\""; s+="}"; return s; } } }
就是一個JSONObject 的remove方法就搞定了。以下是測試結果: ====all attributes:{"num1":"0","num2":"0","num3":"0.0","num4":"0.0"} ====remove num1{"num2":"0","num3":"0.0","num4":"0.0"} ====remove num3{"num2":"0","num4":"0.0"}
原文出處: ALiBABa fastjson去除JSON对象不需要的属性字段 - 纸上得来终觉浅,绝知此事要躬行 - CSDN博客
|
|
冷日 (冷日) |
發表時間:2019/6/27 17:29 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼]fastjson 過濾不需要的字段或者只要某些字段
fastjson 過濾不需要的字段或者只要某些字段/* * 第一種:在對像響應字段前加註解,這樣生成的json也不包含該字段。 * @JSONField(serialize=false) * private String name; */ /* * 第二種:在對像對應字段前面加transient,表示該字段不用序列化,即在生成json的時候就不會包含該字段了。 * private transient String name; */ /* * 第三種:使用fastjson的攔截器 * PropertyFilter profilter = new PropertyFilter(){ @Override public boolean apply(Object object, String name, Object value) { if(name.equalsIgnoreCase("last")){ //false表示last字段將被排除在外 return false; } return true; } }; json = JSON.toJSONString(user, profilter); System.out.println(json); */
/* * 第四種,直接填寫屬性 * SimplePropertyPreFilter filter = new SimplePropertyPreFilter(TTown.class, "id","townname"); response.getWriter().write(JSONObject.toJSONString(townList,filter)); */ 原文出處:fastjson 过滤不需要的字段或者只要某些字段 - stubbornness1219的博客 - CSDN博客
|
|
|
冷日 (冷日) |
發表時間:2019/6/27 17:31 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼]fastjson 過濾掉不需要序列化的屬性
fastjson 過濾掉不需要序列化的屬性 第一種方式,使用 PropertyFilter。 可根據屬性名稱或屬性值進行過濾。 PropertyFilter filter = new PropertyFilter() { // name:屬性名稱,value:屬性值 public boolean apply(Object source, String name, Object value) { // 當屬性名稱是「name」且屬性值是「chennp2008」時,將其過濾出來 if ("name".equals(name) && "chennp2008".equals(value)) { // true 需要序列化,過濾出來 return true; } // false 無需序列化,不過濾出來 return false; } }; SerializeWriter out = new SerializeWriter(); JSONSerializer serializer = new JSONSerializer(out); serializer.getPropertyFilters().add(filter); A a = new A(); a.setName("chennp2008"); serializer.write(a); String text = out.toString(); Assert.assertEquals("{\"name\":\"chennp2008\"}", text);
實體類Entity public class A { private int id; private String name; 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; } } 第二種方式,使用 SimplePropertyPreFilter 。根據屬性名稱過濾。 VO vo = new VO(); vo.setId(123); vo.setName("flym"); // SimplePropertyPreFilter第二個參數:傳入需要序列化屬性的名稱 SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class, "name"); // 只序列化name,不序列化id Assert.assertEquals("{\"name\":\"flym\"}", JSON.toJSONString(vo, filter));
實體類Entity class VO { private int id; private String name; 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; } }
原文出處: fastjson 过滤掉不需要序列化的属性 - 追求极简生活方式 - CSDN博客
|
|
|
|