jsonConfig详细使用

本文详细介绍了json-lib在Java中的使用,包括防止自包含的对象序列化策略、设置忽略序列化的属性、自定义处理器(JsonBeanProcessor、DefaultValueProcessor)的注册以及JSON转换为Java对象时的默认值处理。通过示例代码展示了如何使用CycleDetectionStrategy、setExcludes、setIgnoreDefaultExcludes、registerJsonBeanProcessor和registerDefaultValueProcessor等方法,同时讨论了JSON输出的安全问题,提醒开发者注意XSS攻击风险。
摘要由CSDN通过智能技术生成

一,setCycleDetectionStrategy 防止自包含

Java代码
  1. /**
  2. *这里测试如果含有自包含的时候需要CycleDetectionStrategy
  3. */
  4. publicstaticvoidtestCycleObject(){
  5. CycleObjectobject=newCycleObject();
  6. object.setMemberId("yajuntest");
  7. object.setSex("male");
  8. JsonConfigjsonConfig=newJsonConfig();
  9. jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
  10. JSONObjectjson=JSONObject.fromObject(object,jsonConfig);
  11. System.out.println(json);
  12. }
  13. publicstaticvoidmain(String[]args){
  14. JsonTest.testCycleObject();
  15. }

其中 CycleObject.java是我自己写的一个类:

Java代码
  1. publicclassCycleObject{
  2. privateStringmemberId;
  3. privateStringsex;
  4. privateCycleObjectme=this;
  5. ……//getters&&setters
  6. }

输出 {"sex":"male","memberId":"yajuntest","me":null}

 

二,setExcludes:排除需要序列化成json的属性

Java代码
  1. publicstaticvoidtestExcludeProperites(){
  2. Stringstr="{'string':'JSON','integer':1,'double':2.0,'boolean':true}";
  3. JsonConfigjsonConfig=newJsonConfig();
  4. jsonConfig.setExcludes(newString[]{ "double","boolean"});
  5. JSONObjectjsonObject=(JSONObject)JSONSerializer.toJSON(str,jsonConfig);
  6. System.out.println(jsonObject.getString("string"));
  7. System.out.println(jsonObject.getInt("integer"));
  8. System.out.println(jsonObject.has("double"));
  9. System.out.println(jsonObject.has("boolean"));
  10. }
  11. publicstaticvoidmain(String[]args){
  12. JsonTest.testExcludeProperites();
  13. }

 

 

三,setIgnoreDefaultExcludes

Java代码
  1. @SuppressWarnings("unchecked")
  2. publicstaticvoidtestMap(){
  3. Mapmap=newHashMap();
  4. map.put("name","json");
  5. map.put("class","ddd");
  6. JsonConfigconfig=newJsonConfig();
  7. config.setIgnoreDefaultExcludes(true);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值