FastJson的使用
2017-10-13 10:44
721 查看
今天学习了FastJson,记录下 ,避免以后忘记。
fastjson只有一个jar包,我用的是:fastjson-1.2.8.jar。
之前使用的都是json,而这里使用的fastjson,是阿里巴巴一个开源的jar包,速度会更快。
需要调用另外一个tojsonstring();来禁止循环的引用
这里在对象的成员变量中,存在死循环的变量上,加上@JSONField(serialize=false)。就可以不加载这个成员变量。这里要考虑的是在哪个成员变量上添加的,不同的地方添加,效果会不一样。
fastjson只有一个jar包,我用的是:fastjson-1.2.8.jar。
之前使用的都是json,而这里使用的fastjson,是阿里巴巴一个开源的jar包,速度会更快。
简单对象转换
List对象的转换
这里需要说明的是,转成的json是一个数组List禁止循环的引用
在list对象中,如果加入了2个相同的对象,会进行循环引用。如果不禁止循环引用,那么到页面的数据将会变成ref那个不能解析的对象。需要调用另外一个tojsonstring();来禁止循环的引用
对象的死循环
在A对象的成员变量中,调用B对象。在到B对象的成员变量中,调用A对象。这里在对象的成员变量中,存在死循环的变量上,加上@JSONField(serialize=false)。就可以不加载这个成员变量。这里要考虑的是在哪个成员变量上添加的,不同的地方添加,效果会不一样。
最后附上一个工具类
package com.itheima.utils; import java.io.IOException; import java.util. 4000 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) { // TODO Auto-generated catch block 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; } }
相关文章推荐
- SpringMVC使用FastJson并解决长数值精度丢失问题
- fastjson 使用方法
- fastjson泛型的使用
- 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】
- fastjson的简单使用
- 使用fastjson key和属性名不一致问题
- spring boot最新教程(四):返回json数据以及集成fastjson的使用
- 使用fastJSON解析HashMap中的数据
- Fastjson简单使用方法
- fastJson的使用(高效的json转换工具)
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- 【Java】Java-fastjson-基本使用方法
- 如何使用fastJson来解析JSON格式数据和生成JSON格式数据
- Springboot使用FastJson中文乱码解决方法。
- Gson和Fastjson的使用
- FastJson 使用
- FastJson使用文档
- springboot使用fastjson
- java中使用fastjson、jackson、json-lib解析JSON-------------------妈妈再也不用担心JSON解析
- FastJson的使用