记录一下,平时用到,可速查!
关键:
//        startArray(); 开始解析数组
// endArray(); 结束解析数组
// startObject(); 开始解析键值对
// endObject(); 结束解析键值对
需要用到的jar包:http://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.6/fastjson-1.2.6.jar


demoJson:{
"array": [
1,
2,
3
],
"arraylist": [
{
"a": "b",
"c": "d",
"e": "f"
},
{
"a": "b",
"c": "d",
"e": "f"
},
{
"a": "b",
"c": "d",
"e": "f"
}
],
"object": {
"a": "b",
"c": "d",
"e": "f"
},
"string": "Hello World"
}

/**
* Copyright (C), 2015-2019, XXX有限公司
* FileName: FastJsonTest
* Author: zhang.tong2
* Date: 2019/2/26 9:03
* Description:
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.tong.appoint.web; import com.alibaba.fastjson.JSONReader; import java.io.StringReader; /**
* 〈一句话功能简述〉<br>
* 〈〉
*
* @author zhang.tong2
* @create 2019/2/26
* @since 1.0.0
*/
public class FastJsonTest {
/**
* FastJson逐行解析json
* @author drlyee
* @date 2015-02-10
*/ public static void main(String[] args){
ReadWithFastJson();
} public static void ReadWithFastJson()
{ String jsonString = "{\"array\":[1,2,3],\"arraylist\":[{\"a\":\"b\",\"c\":\"d\",\"e\":\"f\"},{\"a\":\"b\",\"c\":\"d\",\"e\":\"f\"},{\"a\":\"b\",\"c\":\"d\",\"e\":\"f\"}],\"object\":{\"a\":\"b\",\"c\":\"d\",\"e\":\"f\"},\"string\":\"HelloWorld\"}"; // 如果json数据以形式保存在文件中,用FileReader进行流读取!!
// path为json数据文件路径!!
// JSONReader reader = new JSONReader(new FileReader(path)); // 为了直观,方便运行,就用StringReader做示例!
// startArray(); 开始解析数组
// endArray(); 结束解析数组
// startObject(); 开始解析键值对
// endObject(); 结束解析键值对
JSONReader reader = new JSONReader(new StringReader(jsonString));
reader.startObject();
System.out.print("start fastjson");
while (reader.hasNext())
{
String key = reader.readString();
System.out.print("key " + key);
if (key.equals("array"))
{
reader.startArray();
System.out.print("start " + key);
while (reader.hasNext())
{
String item = reader.readString();
System.out.print(item);
}
reader.endArray();
System.out.print("end " + key);
}
else if (key.equals("arraylist"))
{
reader.startArray();
System.out.print("start " + key);
while (reader.hasNext())
{
reader.startObject();
System.out.print("start arraylist item");
while (reader.hasNext())
{
String arrayListItemKey = reader.readString();
String arrayListItemValue = reader.readObject().toString();
System.out.print("key " + arrayListItemKey);
System.out.print("value " + arrayListItemValue);
}
reader.endObject();
System.out.print("end arraylist item");
}
reader.endArray();
System.out.print("end " + key);
}
else if (key.equals("object"))
{
reader.startObject();
System.out.print("start object item");
while (reader.hasNext())
{
String objectKey = reader.readString();
String objectValue = reader.readObject().toString();
System.out.print("key " + objectKey);
System.out.print("value " + objectValue);
}
reader.endObject();
System.out.print("end object item");
}
else if (key.equals("string"))
{
System.out.print("start string");
String value = reader.readObject().toString();
System.out.print("value " + value);
System.out.print("end string");
}
}
reader.endObject();
System.out.print("start fastjson");
}
}

记录心得-FastJson分层解析demo示例的更多相关文章

  1. 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)

    Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...

  2. Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例

    Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...

  3. Demo 示例控制输入光标位置

    <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <meta name="aut ...

  4. Ext简单demo示例

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  5. kafka_2.11-0.8.2.1+java 生产消费程序demo示例

      Kafka学习8_kafka java 生产消费程序demo示例 kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考.kaf ...

  6. 利用阿里巴巴封装的FastJSON来解析json并转换成map

    利用阿里巴巴封装的FastJSON来解析json并转换成map   package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; i ...

  7. SpringBoot整合Swagger2(Demo示例)

    写在前面 由于公司项目采用前后端分离,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理 ...

  8. A记录(主机名解析)、CNAME(别名解析)和URL转发(域名转发)

    什么是 A记录(主机名解析).CNAME(别名解析)和URL转发(域名转发)? A记录(主机名解析)是最普通的域名解析,是把某一主机名解析到一个IP. 例如www.***.com-> 20.10 ...

  9. 记录心得-shiro框架demo示例

    从懵懂到了解,再到熟悉,是一个进步的过程! 先撸代码,跑起来看效果,再做详细的介绍,开始干活! 1,先列出工程目录结构,自己需要创建对应层级的程序和相关配置文件. 2,导入maven依赖的jar包.打 ...

随机推荐

  1. [Mongo]Linux上启动与关闭MongoDB

    文档地址:https://docs.mongodb.com/v3.0/tutorial/install-mongodb-on-amazon/ 默认配置下,Mongo实例会将其数据文件存放在/var/l ...

  2. Hadoop错误之namenode宕机的数据恢复

    情景再现: 在修复hadoop集群某一个datanode无法启动的问题时,搜到有一个答案说要删除hdfs-site.xml中dfs.data.dir属性所配置的目录,再重新单独启动该datanode即 ...

  3. javascript 时间函数整理

    对Javascript日期的部分函数做个小结: var myDate = new Date();//定义时间函数 myDate.getYear();  //获取当前年份(2位) myDate.getF ...

  4. c++11 线程池

    也可参考: https://www.cnblogs.com/ailumiyana/p/10016965.html *** https://blog.csdn.net/jlusuoya/article/ ...

  5. 一种常见的maven打包后同名文件冲突错误

    在使用一些开源框架的时候(比如spark.hadoop.lucene等),偶尔会见到说找不到某个具体实现类或者某个配置(比如spark的akka配置)不见了. 部分例子如下: [Lucene]An S ...

  6. 版本管理_svn_检出_更新_提交_本机 MAC 地址_冲突

    版本管理 git svn [subversion] 实现集中式的版本控制工具软件 来源于最初的工程图纸. 需求: 备份还原 协同修改 权限控制 弊端:集中式(管理方便,但是如果中心服务器瘫痪,整个开发 ...

  7. 变量类型-List

    教程:一:列表的创建 List(列表) 是 Python 中使用最频繁的数据类型.列表中元素的类型可以不相同,数字,字符串甚至可以包含列表(所谓嵌套)    (1)List写在方括号之间,元素用逗号隔 ...

  8. [SDOI2009]SuperGCD

    题目链接 这题.高精度.恶心.难受. 那么高精度的gcd怎么做呢? 若a=b gcd(a,b)=a ①a偶b偶 gcd(a,b)=2*gcd(a/2,b/2) ②a偶b奇 gcd(a,b)=gcd(a ...

  9. iOS—使用picker View

    iOS—使用picker View 一.实现效果 说明:点击随机按钮,能够自动选取,下方数据自动刷新. 二.实现思路 1.picker view的有默认高度为162,不可修改. 2.显示数据,需要设置 ...

  10. Java集合-treebag

    import org.apache.commons.collections4.Bag; import org.apache.commons.collections4.bag.TreeBag; impo ...