JSON这个类是fastjson API的入口,主要的功能都通过这个类提供。

序列化API

  1. // 将Java对象序列化为JSON字符串,支持各种各种Java基本类型和JavaBean
  2. public static String toJSONString(Object object, SerializerFeature... features);
  3.  
  4. // 将Java对象序列化为JSON字符串,返回JSON字符串的utf-8 bytes
  5. public static byte[] toJSONBytes(Object object, SerializerFeature... features);
  6.  
  7. // 将Java对象序列化为JSON字符串,写入到Writer中
  8. public static void writeJSONString(Writer writer,
  9. Object object,
  10. SerializerFeature... features);
  11.  
  12. // 将Java对象序列化为JSON字符串,按UTF-8编码写入到OutputStream中
  13. public static final int writeJSONString(OutputStream os,
  14. Object object,
  15. SerializerFeature... features);

JSON字符串反序列化API

  1. // 将JSON字符串反序列化为JavaBean
  2. public static <T> T parseObject(String jsonStr,
  3. Class<T> clazz,
  4. Feature... features);
  5.  
  6. // 将JSON字符串反序列化为JavaBean
  7. public static <T> T parseObject(byte[] jsonBytes, // UTF-8格式的JSON字符串
  8. Class<T> clazz,
  9. Feature... features);
  10.  
  11. // 将JSON字符串反序列化为泛型类型的JavaBean
  12. public static <T> T parseObject(String text,
  13. TypeReference<T> type,
  14. Feature... features);
  15.  
  16. // 将JSON字符串反序列为JSONObject
  17. public static JSONObject parseObject(String text);

Demo

  1. String jsonStr = "{ " +
  2. " \"animals\": { " +
  3. " \"dog\": [{ " +
  4. " \"name\": \"Rufus\", " +
  5. " \"breed\": \"labrador\" " +
  6. " }, " +
  7. " { " +
  8. " \"name\": \"Marty\", " +
  9. " \"breed\": \"whippet\" " +
  10. " } " +
  11. " ], " +
  12. " \"cat\": { " +
  13. " \"name\": \"Matilda\" " +
  14. " } " +
  15. " } " +
  16. "}";

parse Tree

  1. //parse Tree
  2. JSONObject jsonObj = JSON.parseObject(jsonStr);
  3. System.out.println("jsonObj:" + jsonObj);//{"animals":{"cat":{"name":"Matilda"},"dog":[{"name":"Rufus","breed":"labrador"},{"name":"Marty","breed":"whippet"}]}}
  4. JSONObject animals = jsonObj.getJSONObject("animals");
  5. System.out.println("animals:" + animals);//{"cat":{"name":"Matilda"},"dog":[{"name":"Rufus","breed":"labrador"},{"name":"Marty",","breed":"whippet"}]}
  6. JSONArray dogArr = animals.getJSONArray("dog");
  7. System.out.println("dogArr:" + dogArr);//[{"name":"Rufus","breed":"labrador"},{"name":"Marty","breed":"whippet"}]
  8. JSONObject dog0 = dogArr.getJSONObject(0);
  9. System.out.println("dog0:" + dog0);//{"name":"Rufus","breed":"labrador"}
  10. String dog0name = dog0.getString("name");
  11. System.out.println("dog0name:" + dog0name);//Rufus
  1.  

parse POJO

  1. //parse POJO
  2. JsonRootBean model = JSON.parseObject(jsonStr, JsonRootBean.class);
  3. System.out.println("model:" + model);//JsonRootBean{animals=Animals{dog=[Dog{name='Rufus', breed='labrador'}, Dog{name='Marty', breed='whippet'}], cat=Cat{name='Matilda'}}}

parse POJO Generic

  1. //parse POJO List对象
  2. Type type = new TypeReference<List<Dog>>() {}.getType();
  3. // List<Dog> list = JSON.parseObject(dogArr.toString(), type);
  4. List<Dog> list = JSON.parseArray(dogArr.toString(), Dog.class);
  5. System.out.println("list:" + list);//[Dog{name='Rufus', breed='labrador'}, Dog{name='Marty', breed='whippet'}]

convert POJO to json string

  1. //convert POJO to json string
  2. String modelStr = JSON.toJSONString(model);
  3. System.out.println("modelStr:" + modelStr);//{"animals":{"cat":{"name":"Matilda"},"dog":[{"breed":"labrador","name":"Rufus"},{"breed":"whippet","name":"Marty"}]}}

convert POJO to json bytes

  1. //convert POJO to json bytes
  2. byte[] modelBytes = JSON.toJSONBytes(model);
  3. System.out.println("modelBytes:" + modelBytes.length);//

参考文章:

https://www.w3cschool.cn/fastjson/fastjson-api.html

Fastjson 序列化与反序列化的更多相关文章

  1. FastJson 序列化与反序列化一些说明

    最近所属的组需要对接一些征信结构,就涉及到很多中的数据格式,而springmvc中使用的是jackson作为@ResponseBody的依赖jar 但是个人认为fastkson的性能要高于jackso ...

  2. fastjson序列化和反序列化报com.alibaba.fastjson.JSONException: autoType is not support异常问题,解决方案整合

    1.问题起因 2017年3月15日,fastjson官方发布安全升级公告,该公告介绍fastjson在1.2.24及之前的版本存在代码执行漏洞,当恶意攻击者提交一个精心构造的序列化数据到服务端时,由于 ...

  3. Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)

    背景 记录项目中遇到的 关于fastjson jsonobject转string乱序,string转jsonObject乱序问题的解决方案 fastJson issues 问题来源描述参见: http ...

  4. fastjson 序列化,反序列化Map对象的顺序问题

    使用JSONObject  读取JSON字符串时,读取出来的数据,通过变量时是无序的. 但是业务希望返回是顺序的. String str="{name:\"A\",add ...

  5. Android 中的Json解析工具fastjson 、序列化、反序列化

    Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备 ...

  6. FastJson实现复杂对象序列化与反序列化

    原文:http://blog.csdn.net/xqhadoop/article/details/62217954 一.认识FastJson 1.优势 fastjson是目前java语言中最快的jso ...

  7. 自定义fastjson对枚举类型的序列化及反序列化过程

    通常,fastjson在序列化及反序列化枚举时,一般以下几种策略: 1).根据枚举的name值序列化及反序列化(默认) 2).根据枚举的ordinal序列化及反序列化 3).根据枚举的toString ...

  8. 第一章 JacksonUtil 序列化与反序列化属性总结

    1.json-lib与Jackson 关于json-lib与Jackson对比总结如下: 1).性能方面,Jackson的处理能力高出Json-lib10倍左右. 2).json-lib已经停止更新, ...

  9. springboot学习(三)————使用HttpMessageConverter进行http序列化和反序列化

    以下内容,如有问题,烦请指出,谢谢! 对象的序列化/反序列化大家应该都比较熟悉:序列化就是将object转化为可以传输的二进制,反序列化就是将二进制转化为程序内部的对象.序列化/反序列化主要体现在程序 ...

随机推荐

  1. ER图的构建

    我们在完成一个项目前期,首要的工作是对需求进行分析,然后根据需求画出相应的数据库E-R图,这是我们后期建立数据库和对数据库进行操作的必要操作 这是一个小总结和示例 关系型数据库 关系 (表) stud ...

  2. python的优缺点。

    Python的定位是“优雅”.“明确”.“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序. 开发效率非常高,Pyt ...

  3. mysql模糊查询多个字段

    SELECT * FROM nst_t_conferencehis WHERE ConferName REGEXP '军工|军资';

  4. .net大文件分块上传断点续传demo

    IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...

  5. am335x system upgrade kernel gpio(九)

    1      Hardware Overview gpio interface,pin map: AM335X_I2C0_W_C----------------------MCASP0_AXR1 /* ...

  6. Codevs 1482 路线统计(矩阵乘法)

    1482 路线统计 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description N个节点的有向图, 求从start到finish刚好经过时 ...

  7. Firefox修復QQ快速登錄

    中了一次毒,然後火狐裏面就不能用QQ的快捷登錄了,後找到修復方法: 將QQ的四個文件放入火狐的插件文件夾裏面即可. 1.QQ文件目錄: C:\Program Files (x86)\Tencent\Q ...

  8. 一次 react-router 中遇到的小坑

    react-router Link 标签不生效的问题 废话不多说, 直接上问题, 排解过程和答案 现象: 发现 使用 Link 标签没有 元素的样式和效果, 也不能进行跳转 代码如下: render( ...

  9. Codeforces Round #383 D

    传送门 Description Arpa has a rooted tree (connected acyclic graph) consisting of n vertices. The verti ...

  10. POJ1635 Subway tree systems ——(判断树的同构,树的最小表示法)

    给两棵有根树,判断是否同构.因为同构的树的最小表示法唯一,那么用最小表示法表示这两棵树,即可判断同构.顺便如果是无根树的话可以通过选出重心以后套用之前的方法. AC代码如下: #include < ...