1、了解json

json就是一串字符串 只不过元素会使用特定的符号标注。
 {} 双括号表示对象
 [] 中括号表示数组
 "" 双引号内是属性或值
 : 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
 所以 {"name": "Kobe"} 可以理解为是一个包含name为Kobe的对象
 而[{"name": "Michael"},{"name": "Kobe"}]就表示包含两个对象的数组

当前java的第三方json库非常多,google的gson,alibaba的fastJson,jackson,微软的也有一个,还有java自己的json ,查了下效率和受欢迎度,以后就选择马云的fastJson作为常用的json解析和构建工具了

2、了解fastJson
(1)功能强大,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型 
(2) 无依赖,不需要例外额外的jar,能够直接跑在JDK上
(3)支持注解等等这些高级的特性还没接触到,不谈
(4)几个对比助于理解
 SerializeWriter:相当于StringBuffer
     JSONArray:相当于List<Object>
     JSONObject:相当于Map<String, Object>
(5)API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成

1 public static final Object parse(String text);                                     // 把JSON文本转换成JSONObject或者JSONArray 
2 public static final JSONObject parseObject(String text);                  // 把JSON文本转换成JSONObject 
3 public static final JSONArray parseArray(String text);                     // 把JSON文本转换成JSONArray 
4 public static final <T> T parseObject(String text, Class<T> clazz);  // 把JSON文本转换成JavaBean
5 public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本转换成JavaBean集合

6 public static final String toJSONString(Object object);                    // 将JavaBean序列化为JSON文本 
7 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本

8 public static final Object toJson(Obiect javaObject);         //将JavaBean转换为JSONObject或者JSONArray  
 
3、解析
  首先要明白一个规律,无论传过来的jsonStr怎么组装,怎么嵌套,都逃不了以下三种,形如[]的JSONArray,形如{}的JSONObject以及“:”连接的键值对,因此解析的第一步要先判断是用parseObject还是parseArray方法(前5种),特别提醒如果直接用方法1,一般要强制转换。前提是你知道传过来的json字符串的格式。第一步解析完之后需要用到下面两类方法来调用:
 public JSONObject getJSONObject(int index);   //读取对象
 public JSONObject getJSONObject(String key);   //读取对象
 public JSONArray getJSONArray (int index);   //读取数组
 public JSONArray getJSONArray (String key);   //读取数组 
有时候需要最终取出数据,那么解析到最后一层形如{a:b,c:d,e:f} 的时候就可以直接用
JSONObject里的各种取数据的方法,比如随便说几个,getLongValue(),getString(),getInteger(),参数均为key
例:如下json字符串解析str

[
{
"id": 1
"type": "cycle",
"attribute": {
"center": "(10.4, 123.345)",
"radius": 67.4
}
},
{
"id": 2,
"type": "polygon",
"attribute": [
{
"vertex": "(10.4,133.345)"
},
{
"vertex": "(10.4,143.345)"
}
]
}
]

现在我要得到最后的 "vertex": "(10.4,143.345)"这条数据
首先,最外层是数组
 JSONArray ja = JSON.parseArray(str);
ja这个json数组内部是两个对象,取出第二个(id为2的那个对象)
JSONObject jo = ja.getJSONObject(1) ;
jo这个json对象中有3个键值对,取出第三个,key为attribute的那个,取出后结果为数组,so
JSONArray ja1 = jo.getJSONObject("attribute");
ja1这个json数组内部有两个对象,取出第二个
JSONObject jo1 = ja1.getJSONObject(1) ;
jo1就是 {"vertex": "(10.4,143.345)"}这个对象,现在里面就1个键值对了,取出来就是了
String s = jo1.getString("vertex");
System.out.println(s);//结果为(10.4,143.345)

fastJson常用方法总结的更多相关文章

  1. fastjson常用方法

    fastjson是一款alibaba公司开发的json工具包.json经常被使用在数据传输方面,因此特意对它的一些常用方法做备注,欢迎看客在评论区补充或指出问题. 首先定义一个实体类,用于我们进行对象 ...

  2. Alibaba FastJson 常用方法使用指南

    介绍 FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean. FastJso ...

  3. 第六篇:fastJson常用方法总结

    1.了解json json就是一串字符串 只不过元素会使用特定的符号标注. {} 双括号表示对象 [] 中括号表示数组 "" 双引号内是属性或值 : 冒号表示后者是前者的值(这个值 ...

  4. 使用FastJson导出JSON

    概述 fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,比gson快大约6倍. https://github.com/alibaba/fastjson Fast ...

  5. Spring Boot (2) Restful风格接口

    Rest接口 动态页面jsp早已过时,现在流行的是vuejs.angularjs.react等前端框架 调用 rest接口(json格式),如果是单台服务器,用动态还是静态页面可能没什么大区别,如果服 ...

  6. FastJson中JSONObject用法及常用方法总结

    本文为博主原创,未经允许不得转载: 最近一直有用到解析各种数据,主要是用FastJson进行数据解析,其中一个重要的类为JSONObject,今天有时间,所以进行总结一下: JSONobject是Fa ...

  7. fastJSON的常用方法总结

    fastJSON的常用方法总结 fastJSON中常用的对象是JSON,JSONArray,JSONObject三个对象.常用的方法如对象转为JSON字符串,JSON字符串转为对象,JSON字符串转为 ...

  8. fastJson中常用方法以及遇到的“坑”

    1.使用fastJson,首先引入fastJson依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> & ...

  9. fastjson的常用方法

    /** * 解析对象形式的json字符串 */ public static void test1() { String jsonStr = "{\"JACKIE_ZHANG\&qu ...

随机推荐

  1. Android视频压缩

    最推荐(使用方便,默认压缩为原来视频大小的1/4左右): https://blog.csdn.net/qq_35373333/article/details/79564991  https://git ...

  2. CSS函数

    布局时发现CSS居然能进行计算,cale()函数用于动态计算长度值 html,body的height为100%,黑框浮动width为200px,橙框处标准流,由于浮动最初目的是为了实现文字环绕,所以文 ...

  3. 老师博客copy

    新闻 管理   Py西游攻关之基础数据类型   数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频 ...

  4. Python3-lamba表达式、zip函数

    lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 == : name = 'wupeiqi' else: name = 'alex' ...

  5. python使用PDB进行调试

    参考链接:https://www.cnblogs.com/xiaohai2003ly/p/8529472.html 调入包:import pdb 调试时的一些命令: (1)p  变量名:查看变量:(p ...

  6. python中的正则表达式--re模块

    参考博客:https://www.cnblogs.com/tina-python/p/5508402.html 这里说一下python的re模块即正则表达式模块,先列出其中涉及到的各种字符和模式等: ...

  7. k64 datasheet学习笔记12---System Integration Module (SIM)

    1.前言 Features of the SIM include: System clocking configuration(1)System clock divide values(2) Arch ...

  8. mysql进制之间的转换

    1.十进制转换成二进制 select bin(5); 2.十进制转换成八进制 select oct(5); 3.十进制转换成十六进制 select hex(5); 4.二进制转换成十进制 select ...

  9. 武汉倍特威视系统有限公司 --- 安全帽识别|烟火识别|智慧工地|BVS智能视频分析

    武汉倍特威视系统有限公司 --- 安全帽识别|烟火识别|智慧工地|BVS智能视频分析 http://www.betvsys.com/

  10. Delphi 的 FireDAC 连接管理与配置过程

    Delphi 的 FireDAC 连接管理与配置过程: 使用 FireDAC 技术连接 数据库,主要是使用  TFDConnection ,其中有一参数是选择  ConnectionDefFile. ...