FastJSON的使用方法

FastJSON是阿里巴巴的出品的一个JSON类库,其功能强大,速度号称为当今最快,比net.sf.json,Google的GSON都要快。主要方法如下:

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

SerializeWriter:相当于StringBuffer

JSONArray:相当于List<Object>

JSONObject:相当于Map<String, Object>

一些比较常用的方法:

1.List<Map<String,Object>>转JSONArray:

/**
     * list转json,首先需要得到JSON字符串
     * @param list
     * @return
     */
    public JSONArray listMap2JSONArray(List<Map<String,Object>> list){
        /*JSON.toJSONString(object, prettyFormat),这里的prettyFormat当为真时,
         * 得到的JSON为带格式的JSON,否则为普通JSON
         */
        return JSON.parseArray(JSON.toJSONString(list,true));
    }

注意到以上代码的JSON.toJSONString(object, prettyFormat)方法,该方法第二个参数为布尔值,当该值为真时,转化得来的JSON字符串为带格式的JSON:

[
    {
        "age":"21",
        "gender":"male",
        "name":"Tom"
    },
    {
        "age":"21",
        "gender":"male",
        "name":"Tom"
    }
]

而当prettyFormat为假时,转化而来的是不带格式的JSON字符串:
[{"age":"21","gender":"male","name":"Tom"},{"age":"21","gender":"male","name":"Tom"}]

可以看到第一种格式的JSON字符串只是便于人们阅读而已。从便于计算机解析的角度来看,两者是一样的。

2.JSONArray转List<Map<String,Object>>

    /**
     * JSONArray转listMap
     * @param jsonArray
     */
    public List<Map<String,Object>> JSONArray2listMap(JSONArray jsonArray){
        return JSON.parseObject(jsonArray.toJSONString(),new TypeReference<List<Map<String,Object>>>(){});
    }

通过TypeReference实现泛型。

3.JSONObject转Map<String,Object>

    /**
     * JSON转Map
     * @param jsonObj
     * @return
     */
    public Map<String,Object> json2Map(JSONObject jsonObj){
        return JSON.parseObject(jsonObj.toJSONString(),new TypeReference<Map<String,Object>>(){});
    }

4.Map<String,Object>转JSONObject

    /**
     * Map转JSON
     * @param map
     * @return
     */
    public JSONObject map2JSON(Map<String,Object> map){
        return JSON.parseObject(JSON.toJSONString(map,true));
    }

5.JSON转List<JavaBean>

    /**
     * JSONArray转List<File>(存储JavaBean的List)
     * @param jsonArray
     * @return
     */
    public List<File> jsonArray2BeanList(JSONArray jsonArray){
        return JSON.parseArray(jsonArray.toJSONString(),File.class);
    }

时间: 2024-11-09 13:25:17

FastJSON的使用方法的相关文章

一个由proguard与fastJson引起的血案(转)

更新微信sdk导致ComposeData中的内部类ComposeDataSender方法被混淆 根本原因,fastjson使用姿势不对. 问题描述: 一个发件人列表里,应当呈现的数据(这里命名为ComposeData)为空 (1)业务逻辑层 获取发件人列表时,如果Composedata超时,会从网络重新拉取Json格式的ComposeData,拉取后利用FastJson的toString()方法,将ComposeData写入DB. 混淆情况下,toString()生成的json字符串会缺少ali

一个由proguard与fastJson引起的血案

更新微信sdk导致ComposeData中的内部类ComposeDataSender方法被混淆 根本原因,fastjson使用姿势不对. 问题描述: 一个发件人列表里,应当呈现的数据(这里命名为ComposeData)为空 (1)业务逻辑层 获取发件人列表时,如果Composedata超时,会从网络重新拉取Json格式的ComposeData,拉取后利用FastJson的toString()方法,将ComposeData写入DB. 混淆情况下,toString()生成的json字符串会缺少ali

jmeter中beanshell postprocessor结合fastjson库提取不确定个数的json参数

在项目实践中,遇到了这样一个问题.用jmeter作http接口测试,需要的接口参数个数是不确定的.也就是说,在每次测试中,根据情况不同,可能页面中的列表中所含的参数个数是不确定的,那么要提取的参数个数也是不确定的,可能是1个,也可能是2个或3个,甚至更多. 例如,返回的接口消息json消息可能如下 { "data": { "records": [{ "DEVICE_TYPE": 194, "DEVICE_STATUS": 0,

fastjson漏洞导致服务瘫痪,先别忙升级

1.背景  2019年9月5日,fastjson修复了当字符串中包含\x转义字符时可能引发OOM的问题.建议广大用户升级fastjson版本至少到1.2.60.  一个bug这么恐怖,竟然直接OOM,亲身体验下吧.测试代码如下: JSON.parse("[{\"a\":\"a\\x]");实验效果:4分钟 堆内存 占用上升达2G: fastjson_x_oom   这么牛掰,甲方爸爸高度重视,火速把自己负责的服务的fastjson版本升级到1.2.60,线

修改Feign数据解析,由jackson改为fastjson,同时解决fastjson中Content-Type问题

https://my.oschina.net/u/3419586/blog/2964047 背景:在用Feign Client 接口调用,由于jackson对null等特殊值处理存在异常,故改用fastjson解析数据 操作步骤:1.增加文件FeignConfig,注入Bean,修改默认Feign默认的解析方式2.由于fastjson1.2.28后,增加了对Content-type验证,故添加多种MediaType @Configuration public class FeignConfig

fastjson使用详解

目录 一.fastjson介绍 二.fastjson使用 三.fastjson 常用 API 四.fastjson使用演示 测试类准备 1.java类转换为json字符串 2.json字符串转为java类 五.fastjson实际开发应用 1.对复杂的json串转为java类 2.对json串的操作 六.fastjson漏洞问题 一.fastjson介绍 ?在前后端数据传输交互中,经常会遇到字符串(String)与json,XML等格式相互转换与解析,其中json以跨语言,跨前后端的优点在开发中

json数据解析,并实现将网络json数据获取用listview显示

需要使用jar包 fastjson或gson这两个jar包. //Gson的使用方式 Gson gson=new Gson(); String str=ReadAssetsFile.readtext(this,"json_ss");//this当前类,"json_ss"需要解析的文件名 UserMessage userMessage=gson.fromJson(str,UserMessage.class);//需要解析的json文件最外层类名 //fastjson的

java json和对象互转

开发过程中遇到一些对象转string和string转对象的问题,浪费了很久,现在用的熟练些了,总结如下: 1.字符串尽量定义成json可解析的,如{"name":"a","param":"b"},而不是{"a":"b"} 2.用到开源项目:fastjson 需要引入: <dependency> <groupId>com.alibaba</groupId>

json格式化属性自定义-2

概述: 在Java web开发中免不了要将Java对象格式化成json数据形式返回到客户端,而提供格式化功能的工具也很多,其中以fastjson速度最快. 但是fastjson在使用中显得还不够那么尽人意, 1. 没有提供一个方便点方法来实现过滤属性: 2. 没有提供多条格式化数据整合在一起,而以一个key来对其关联. 一个po对象User如下定义 public class User { private int id; private String name; private String ip