8、技术分析fastJson使用
2017-11-01 08:31
260 查看
一、导入包
二、使用
package com.itheima.test; import java.util.ArrayList; import java.util.List; import org.junit.Test; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.itheima.domain.Customer; public class Demo1 { /** * 演示fastjson的简单的使用 */ @Test public void run1(){ Customer c = new Customer(); c.setCust_id(20L); c.setCust_name("测试"); c.setCust_phone("120"); // 转换成json的字符串 String jsonString = JSON.toJSONString(c); System.out.println(jsonString); } @Test public void run2(){ List<Customer> list = new ArrayList<Customer>(); Customer c = new Customer(); c.setCust_id(20L); c.setCust_name("测试"); c.setCust_phone("120"); list.add(c); Customer c2 = new Customer(); c2.setCust_id(30L); c2.setCust_name("测试2"); c2.setCust_phone("12000"); list.add(c2); // 转换成json的字符串 String jsonString = JSON.toJSONString(list); System.out.println(jsonString); } /** * 默认的情况下,fastjson禁止循环的引用 */ @Test public void run3(){ List<Customer> list = new ArrayList<Customer>(); Customer c = new Customer(); c.setCust_id(20L); c.setCust_name("测试"); c.setCust_phone("120"); list.add(c); list.add(c); // 转换成json的字符串 // String jsonString = JSON.toJSONString(list); // 禁止循环的引用 String jsonString = JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect); System.out.println(jsonString); } /** * 死循环的问题 */ @Test public void run4(){ Person p = new Person(); //person与role互相引用 p.setPname("美美"); Role r = new Role(); r.setRname("管理员"); p.setRole(r); r.setPerson(p); // 禁止循环的引用 String jsonString = JSON.toJSONString(r,SerializerFeature.DisableCircularReferenceDetect); System.out.println(jsonString); } }
三、对应的效果
1、
2、
3、
// 转换成json的字符串 // String jsonString = JSON.toJSONString(list);
// 禁止循环的引用 String jsonString = JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect); System.out.println(jsonString);
4、
因为3禁止循环引用产生的问题
解决:在person加注解
四、导入/crm/src/com/louis/utils/FastJsonUtil.java
package com.louis.utils; import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; public class FastJsonUtil { /** * 将对象转成json串 * @param object * @return */ public static String toJSONString(Object object){ //DisableCircularReferenceDetect来禁止循环引用检测 return JSON.toJSONString(object,SerializerFeature.DisableCircularReferenceDetect); } //输出json public static void write_json(HttpServletResponse response,String jsonString){ response.setContentType("application/json;utf-8"); response.setCharacterEncoding("UTF-8"); try { response.getWriter().print(jsonString); } catch (IOException e) { e.printStackTrace(); } } /** * ajax提交后回调的json字符串 * @return */ public static String ajaxResult(boolean success,String message) { Map map=new HashMap(); map.put("success", success);//是否成功 map.put("message", message);//文本消息 String json= JSON.toJSONString(map); return json; } /** * JSON串自动加前缀 * @param json 原json字符串 * @param prefix 前缀 * @return 加前缀后的字符串 */ public static String JsonFormatterAddPrefix(String json,String prefix,Map<String,Object> newmap) { if(newmap == null){ newmap = new HashMap(); } Map<String,Object> map = (Map) JSON.parse(json); for(String key:map.keySet()) { Object object=map.get(key); if(isEntity(object)){ String jsonString = JSON.toJSONString(object); JsonFormatterAddPrefix(jsonString,prefix+key+".",newmap); }else{ newmap.put(prefix+key, object); } } return JSON.toJSONString(newmap); } /** * 判断某对象是不是实体 * @param object * @return */ private static boolean isEntity(Object object) { if(object instanceof String ) { return false; } if(object instanceof Integer ) { return false; } if(object instanceof Long ) { return false; } if(object instanceof java.math.BigDecimal ) { return false; } if(object instanceof Date ) { return false; } if(object instanceof java.util.Collection ) { return false; } return true; } }
相关文章推荐
- Android项目-智慧北京:02(三种技术设计主页面及源码分析点击事件传递的机制及Json数据传递的使用)
- 阿里巴巴的fastjson使用分析
- JSON技术-Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean
- 使用TProfiler分析并调优项目中的Fastjson序列化代码
- Android JSON:Gson,FastJson解析库的使用和对比分析
- 使用TProfiler分析并调优项目中的Fastjson序列化代码
- J2EE 工程中使用JSON作为协议的话,可以使用Fastjson作为更好的替代了
- 如何更有效使用 Rational AppScan 扫描大型网站,第 1 部分: 工作原理及技术分析 推荐
- 使用DLL技术的木马分析
- 一起谈.NET技术,在.NET使用JSON作为数据交换格式
- java笔记:自己动手写javaEE框架(七)--使用JSON和Ajax技术
- 五大商业分析技术趋势与使用方式
- Android使用逆向技术分析手机恶意代码
- Web端服务器推送技术原理分析及dwr框架简单的使用
- Fastjson技术内幕
- 推送技术原理分析及XMPP简单的使用
- 使用fastjson遇到的问题
- 技术专题:请需要我帮忙抓包分析网络的网友,使用下面的抓包教程,然后将数据包发给我
- 五大商业分析技术趋势与使用方式
- asp.net中Ajax技术使用Json格式传递数据