FastJSON 简介及其Map/JSON/String 互转
转载http://blog.csdn.net/hongwangzhang/article/details/51260879
在日志解析,前后端数据传输交互中,经常会遇到 String 与 map、json、xml 等格式相互转换与解析的场景,其中 json 基本成为了跨语言、跨前后端的事实上的标准数据交互格式。应该来说各个语言中 解析 json 的库都一大片(具体 json 格式与三方库的介绍请见: http://www.json.org/json-zh.html ),比如 Python 都集成在了内置库中,成为标准 API,今天我们要聊的是 Java 中如何方便的使用 json 格式。
从上面的链接介绍中我们可以看到,java 的三方 json 库是最多的,可谓百花齐放百家争鸣的节奏。。。但是,某些库存在链式依赖的问题,使用的时候要注意,如果你没用 maven 管你你的依赖,用起来会很痛苦,比如 json-lib、smart-json 等。下面我要推荐的是阿里巴巴工程师开源的一个 json 库:FastJSON,这个库在解析速度和易用性上来说都很不错。
1、了解fastjson
1.1 Fastjson介绍
Fastjson是一个Java语言编写的JSON处理器。
1、遵循 http://json.org 标准,为其官方网站收录的参考实现之一。
2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。
3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。
4、开源,使用Apache License 2.0协议开源。
1.2 如果获得Fastjson?
https://github.com/alibaba/fastjson
2、主要的使 用入口
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
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。
3、有关类库的一些说明
SerializeWriter:相当于StringBuffer
JSONArray:相当于List<Object>
JSONObject:相当于Map<String, Object>
JSON反序列化没有真正数组,本质类型都是List<Object>
4、fastjson还有很多很高级的特性
比如支持注解、支持全类型序列化,这些都是很好的特性,功能强大,不在本次测试范围。
5、测试代码
package lavasoft.stu.json; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; import java.util.*; /** * Created by IntelliJ IDEA. * * @author leizhimin 11-11-22 上午9:15 */ public class Foo { private String vString = "vStringhehhehe"; private char vchar = 'x'; private byte vbyte = 64; private short vshort = 128; private int vint = 65535; private long vlong = 9999999L; private float vfloat = 12.1f; private double vdouble = 22.203d; private boolean vboolean = false; // private Date vdate = new Date(); private Date dddd = new Date(); private Date vDate = new Date(); private Date v_Date = new Date(); private Object vnull = null; private String[] avString = {"aaa", "bbb", "ccc"}; private int[] avint = {1, 2, 3, 4}; private boolean[] avboolean = {true, false, true, true}; private List<String> listString = new ArrayList<String>(); private Map<String, String> map = new HashMap<String, String>(); private Bar bar = new Bar(); private Bar[] avBar = {new Bar(), new Bar()}; private List<Bar> listBar = new ArrayList<Bar>(); { listString.add("listString1"); listString.add("listString2"); listString.add("listString3"); map.put("x", "s11111x"); map.put("y", "s22222y"); map.put("z", "s33333z"); listBar.add(new Bar()); listBar.add(new Bar()); listBar.add(new Bar()); } public String getvString() { return vString; } public void setvString(String vString) { this.vString = vString; } public char getVchar() { return vchar; } public void setVchar(char vchar) { this.vchar = vchar; } public byte getVbyte() { return vbyte; } public void setVbyte(byte vbyte) { this.vbyte = vbyte; } public short getVshort() { return vshort; } public void setVshort(short vshort) { this.vshort = vshort; } public int getVint() { return vint; } public void setVint(int vint) { this.vint = vint; } public long getVlong() { return vlong; } public void setVlong(long vlong) { this.vlong = vlong; } public float getVfloat() { return vfloat; } public void setVfloat(float vfloat) { this.vfloat = vfloat; } public double getVdouble() { return vdouble; } public void setVdouble(double vdouble) { this.vdouble = vdouble; }
转载于:https://www.cnblogs.com/ceshi2016/p/6661536.html
FastJSON 简介及其Map/JSON/String 互转相关推荐
- FastJSON 简介及其Map/JSON/String 互转(转载)
http://my.oschina.net/leejun2005/blog/268634?utm_source=tuicool&utm_medium=referral 转载于:https:// ...
- java json开发包 fastjson 简介
Json是一种轻量级的数据交换格式,采用一种"键:值"对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言.在使用Java做Web开发时,不可避免 ...
- byte[]与String互转对象和JSON相互转
byte[]与String互转 // String转byte[]String str = "110";byte[] src = str.getBytes();// byte[]转S ...
- 使用 Gson 将 Map、List等转换为json string
示例: 将 Map 转为 json string 1.创建 Map 并初始化 Map<String, String> params = new HashMap<>(); par ...
- alibaba 实体转json_com.alibaba.fastjson 转换List Map等对象
原文:http://www.cnblogs.com/goody9807/p/4244862.html 本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBea ...
- Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)
JSON介绍: JSON:JavaScript对象表示法 JSON是存储和交换文本信息的语法. 特点: JSON是轻量级的文本数据交换格式 JSON独立于语言和平台 JSON具有自我描述性,更易理解 ...
- 记一次FastJSON和Jackson解析json时遇到的中括号问题
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jadyer/article/details/24395015 完整版见https://jadyer. ...
- FastJson快速上手【Json解析工具】
目录 一.spring boot工程中引入FastJson依赖 二.调用JSON类的静态方法直接进行json序列化和反序列化 2.1 序列化 2.2 反序列化 三.快速演示: 四.思考 五.web案例 ...
- java中map和对象互转工具类
在项目开发中,经常碰到map转实体对象或者对象转map的场景,工作中,很多时候我们可能比较喜欢使用第三方jar包的API对他们进行转化,而且用起来也还算方便,比如像fastJson就可以轻松实现map ...
- java中集合对象与string互转的几种方式
准备数据: UserInfo.java @Data @AllArgsConstructor public class UserInfo {private Long id;private String ...
最新文章
- 万能android调用webservice方法——参数类型不受限制
- GPT-3获NeurIPS 2020最佳论文奖
- 未来的程序员该如何选公司和谋规划?
- 2019牛客暑期多校训练营(第一场) - B - Integration - 数学
- js 面向对象插件写法,还是很好理解的
- mysql 元数据获取_[MySQL] 获取元数据的步骤
- new/delete和malloc/free的区别一般汇总
- Redis 基础——五大类型与数据结构
- Qt文档阅读笔记-Custom Items Example解析
- make: *** [.build_release/lib/libcaffe.so] 错误 1
- 关于wineQQ8.9.19983deepin23版本提升不能在使用请升级,Linux偷懒升级方法
- 《自己动手写操作系统 》第九章 一 简易硬盘驱动的实现
- Python调试工具——ipdb
- 计算机四级(网络工程师)内容,计算机四级《网络工程师》考试内容
- FedEx联邦快递查询寄件电子面单API接口接入教程-快递100API(以国际电子面单接口为例)
- 网络安全协议(三)--基本安全协议
- 网页在ie内核的浏览器下面整体偏左
- HC-SR501人体红外传感器
- 二、全国计算机三级数据库考试——理论知识总结(填空题)
- java while 循环练习题
热门文章
- 公司的摄像头密码要统一
- MySQL用C访问的示例代码
- 大话计算机张冬pdf扫描分享,第一章 【PMC分享】《大话存储》作者张冬:OpenPower CAPI简析.pdfx.pdf...
- android alarmmanager管理,android alarmmanager需要权限吗
- 写失败数据写入成功_马克·吐温写小说有多成功,做生意就有多失败,创业亏的就剩烟囱...
- char*赋值给std::string是深拷贝
- 介绍一下mysql数据库_一、简单介绍下 MySQL数据库
- ttl接地是高电平还是低电平_TTL 门电路输入端分别接大电阻接地,小电阻接地,或空接,输入的是什么电平???跟是什么类型的门电路......
- intel编译器linux2020依赖,▲记录▲ linux下intel的ifort编译器下载安装及配置
- 轮播图的效果实现小米商城和京东商城