记录心得-FastJson分层解析demo示例
记录一下,平时用到,可速查!
关键:
// 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示例的更多相关文章
- 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)
Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...
- Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例
Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...
- Demo 示例控制输入光标位置
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <meta name="aut ...
- Ext简单demo示例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- kafka_2.11-0.8.2.1+java 生产消费程序demo示例
Kafka学习8_kafka java 生产消费程序demo示例 kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考.kaf ...
- 利用阿里巴巴封装的FastJSON来解析json并转换成map
利用阿里巴巴封装的FastJSON来解析json并转换成map package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; i ...
- SpringBoot整合Swagger2(Demo示例)
写在前面 由于公司项目采用前后端分离,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理 ...
- A记录(主机名解析)、CNAME(别名解析)和URL转发(域名转发)
什么是 A记录(主机名解析).CNAME(别名解析)和URL转发(域名转发)? A记录(主机名解析)是最普通的域名解析,是把某一主机名解析到一个IP. 例如www.***.com-> 20.10 ...
- 记录心得-shiro框架demo示例
从懵懂到了解,再到熟悉,是一个进步的过程! 先撸代码,跑起来看效果,再做详细的介绍,开始干活! 1,先列出工程目录结构,自己需要创建对应层级的程序和相关配置文件. 2,导入maven依赖的jar包.打 ...
随机推荐
- 一些有用的huginn Agent
具体API地址 https://huginnio.herokuapp.com/agents 貌似这些Agent都可以按照频率和定时的时间点来触发, 1.Attribute Difference Age ...
- Centos6.5部署vsftpd+mysql认证
1.FTP传输原理 FTP,文件传输协议,是工作在应用层,基于TCP实现,依赖于互联网即可通讯. 1)连接模式 控制(命令)连接,用来通信,一直在线,客户端随机端口连接服务端TCP:21端口. 数据连 ...
- WinIo驱动级键盘模拟编程
转自:http://blog.sina.com.cn/s/blog_455d7a320100vr37.html 前天无聊,翻翻自己的兴趣项目文件夹,发现了这个放下很久的项目!那是大三时候的事了.当时是 ...
- vue 监听路由变化
方法一:通过 watch // 监听,当路由发生变化的时候执行 watch:{ $route(to,from){ console.log(to.path); } }, 或 // 监听,当路由发生变化的 ...
- 遍历文件后缀名 为 .java的文件
import java.io.File; import java.io.FileFilter; //创建一个功夫类继承文件管理类 public class FileFu implements Fil ...
- Assembly.LoadFrom加载程序集无法释放资源的解决方案
下面此方法加载程序集会导致程序集一直被占用 Assembly asm = Assembly.LoadFrom(dllPath); 解决方案: //通过此方法读取可以解决dll被占用问题 byte[] ...
- Unity进阶----AssetBundle_01(2018/10/30)
AssetBundle作用和定义 1).AssetBundle是一个压缩包包含模型.贴图.预制体.声音.甚至整个场景,可以在游戏运行的时候被加载: 2).AssetBundle自身保存着互相的依赖关系 ...
- nginx break-circus
upstream : read-timeout,connection-timeout,分级别 500ms,1S,100S,长链接 ---颗粒度[每个服务api health-check]--- --- ...
- Elasticsearch学习笔记(八)Elasticsearch的乐观锁并发控制
一.基于_version的乐观锁并发控制 语法:PUT /test_index/test_type/id?version=xxx 更新时带上数据 ...
- [译]《Sphinx权威指南》 - Sphinx入门
本章中,我们会讨论到Sphinx基础的安装.配置和维护.不要被“基础”这形容词糊弄而跳过这个章节.对于“基础”,我不是指简单到显而易见的东西,而是指所有人都会用到的功能. 一般来说,Sphinx会使用 ...