转载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 互转相关推荐

  1. FastJSON 简介及其Map/JSON/String 互转(转载)

    http://my.oschina.net/leejun2005/blog/268634?utm_source=tuicool&utm_medium=referral 转载于:https:// ...

  2. java json开发包 fastjson 简介

    Json是一种轻量级的数据交换格式,采用一种"键:值"对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言.在使用Java做Web开发时,不可避免 ...

  3. byte[]与String互转对象和JSON相互转

    byte[]与String互转 // String转byte[]String str = "110";byte[] src = str.getBytes();// byte[]转S ...

  4. 使用 Gson 将 Map、List等转换为json string

    示例: 将 Map 转为 json string 1.创建 Map 并初始化 Map<String, String> params = new HashMap<>(); par ...

  5. alibaba 实体转json_com.alibaba.fastjson 转换List Map等对象

    原文:http://www.cnblogs.com/goody9807/p/4244862.html 本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBea ...

  6. Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)

    JSON介绍: JSON:JavaScript对象表示法 JSON是存储和交换文本信息的语法. 特点: JSON是轻量级的文本数据交换格式 JSON独立于语言和平台 JSON具有自我描述性,更易理解 ...

  7. 记一次FastJSON和Jackson解析json时遇到的中括号问题

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jadyer/article/details/24395015 完整版见https://jadyer. ...

  8. FastJson快速上手【Json解析工具】

    目录 一.spring boot工程中引入FastJson依赖 二.调用JSON类的静态方法直接进行json序列化和反序列化 2.1 序列化 2.2 反序列化 三.快速演示: 四.思考 五.web案例 ...

  9. java中map和对象互转工具类

    在项目开发中,经常碰到map转实体对象或者对象转map的场景,工作中,很多时候我们可能比较喜欢使用第三方jar包的API对他们进行转化,而且用起来也还算方便,比如像fastJson就可以轻松实现map ...

  10. java中集合对象与string互转的几种方式

    准备数据: UserInfo.java @Data @AllArgsConstructor public class UserInfo {private Long id;private String ...

最新文章

  1. 万能android调用webservice方法——参数类型不受限制
  2. GPT-3获NeurIPS 2020最佳论文奖
  3. 未来的程序员该如何选公司和谋规划?
  4. 2019牛客暑期多校训练营(第一场) - B - Integration - 数学
  5. js 面向对象插件写法,还是很好理解的
  6. mysql 元数据获取_[MySQL] 获取元数据的步骤
  7. new/delete和malloc/free的区别一般汇总
  8. Redis 基础——五大类型与数据结构
  9. Qt文档阅读笔记-Custom Items Example解析
  10. make: *** [.build_release/lib/libcaffe.so] 错误 1
  11. 关于wineQQ8.9.19983deepin23版本提升不能在使用请升级,Linux偷懒升级方法
  12. 《自己动手写操作系统 》第九章 一 简易硬盘驱动的实现
  13. Python调试工具——ipdb
  14. 计算机四级(网络工程师)内容,计算机四级《网络工程师》考试内容
  15. FedEx联邦快递查询寄件电子面单API接口接入教程-快递100API(以国际电子面单接口为例)
  16. 网络安全协议(三)--基本安全协议
  17. 网页在ie内核的浏览器下面整体偏左
  18. HC-SR501人体红外传感器
  19. 二、全国计算机三级数据库考试——理论知识总结(填空题)
  20. java while 循环练习题

热门文章

  1. 公司的摄像头密码要统一
  2. MySQL用C访问的示例代码
  3. 大话计算机张冬pdf扫描分享,第一章 【PMC分享】《大话存储》作者张冬:OpenPower CAPI简析.pdfx.pdf...
  4. android alarmmanager管理,android alarmmanager需要权限吗
  5. 写失败数据写入成功_马克·吐温写小说有多成功,做生意就有多失败,创业亏的就剩烟囱...
  6. char*赋值给std::string是深拷贝
  7. 介绍一下mysql数据库_一、简单介绍下 MySQL数据库
  8. ttl接地是高电平还是低电平_TTL 门电路输入端分别接大电阻接地,小电阻接地,或空接,输入的是什么电平???跟是什么类型的门电路......
  9. intel编译器linux2020依赖,▲记录▲ linux下intel的ifort编译器下载安装及配置
  10. 轮播图的效果实现小米商城和京东商城