您的位置:首页 > Web前端 > JavaScript

FastJson的使用

2017-10-13 10:44 721 查看
今天学习了FastJson,记录下 ,避免以后忘记。

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;

}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: