几种常用的JSON解析工具的使用
目录
简介:
(1)org.json的使用
(2)net.sf.json的使用
(3)json-simple的使用
(4)gson的使用
(5)jackson的使用
(6)fastjson的使用
简介:
现在越来越多的网站采用JSON来交换数据,在Json.org网站上,Java可以使用的解析Json的组件就有超过20种。
Json官网:http://json.org/
页面往下拉,可以看到java板块的json类库:
其中gson,jackson,fastjson都是我们常用的工具类,每种工具用起来可能稍稍有点差别,但都是大同小异,基本上都包含两大块JSONObject和JSONArray
JSONObject:普通json对象
JSONArray:json数组
这里只简单测试一下JSON的基本生成与解析,复杂的类型与之同理,这里不过多介绍。
(1)org.json的使用
(实测最好将该jar包下载下来,然后手动导入工程)
<dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20171018</version>
</dependency>
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.Test;/*** java原生json处理*/
public class OrgJsonTest {/*** JSON的初始化*/@Testpublic void test1() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "zhangsan");jsonObject.put("age", 20);jsonObject.put("married", false);System.out.println(jsonObject);// {"name":"zhangsan","married":false,"age":20}JSONArray jsonArray = new JSONArray();jsonArray.put(0, true);jsonArray.put(1, "lisi");jsonArray.put(2, 22);System.out.println(jsonArray);// [true,"lisi",22]}/*** JSON的解析*/@Testpublic void test2() {// 初始化JSONObject jsonObject = new JSONObject("{\"name\":\"zhangsan\",\"married\":false,\"age\":20}");String name = jsonObject.getString("name");int age = jsonObject.getInt("age");boolean married = jsonObject.getBoolean("married");System.out.println("name=" + name + "\nage=" + age + "\nmarried=" + married);// name=zhangsan// age=20// married=falseJSONArray jsonArray = new JSONArray("[true,\"lisi\",22]");boolean arr1 = jsonArray.getBoolean(0);String arr2 = jsonArray.getString(1);int arr3 = jsonArray.getInt(2);System.out.println(arr1 + "\t" + arr2 + "\t" + arr3);}/*** JSONObject和JSONArray的相互嵌套*/@Testpublic void test3() {// 初始化JSONObject jsonObject = new JSONObject("{\"name\":\"zhangsan\",\"married\":false,\"age\":20}");JSONObject address = new JSONObject("{\"address\":\"China\"}");JSONArray education = new JSONArray("[\"小学\",\"初中\",\"高中\"]");jsonObject.put("addr", address);jsonObject.put("edu", education);System.out.println(jsonObject);// {"edu":["小学","初中","高中"],"name":"zhangsan","addr":{"address":"China"},"married":false,"age":20}}
}
(2)net.sf.json的使用
<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version>
</dependency><dependency><groupId>net.sf.ezmorph</groupId><artifactId>ezmorph</artifactId><version>1.0.6</version>
</dependency>
import org.junit.Test;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;public class NetsfJSON {/*** 创建JSON*/@Testpublic void test1() {String str = "{\"name\":\"zhangsan\",\"age\":20}";JSONObject json1 = JSONObject.fromObject(str);System.out.println(json1.toString());// {"name":"zhangsan","age":20}JSONObject json2 = new JSONObject();json2.put("name", "zhangsan");json2.put("age", 20);json2.element("telphone", "15000000000");System.out.println(json2);// {"name":"zhangsan","age":20,"telphone":"15000000000"}}/*** 解析JSON*/@Testpublic void test2() {String str = "{\"name\":\"zhangsan\",\"age\":20}";JSONObject json = JSONObject.fromObject(str);String name = json.getString("name");int age = json.getInt("age");System.out.println("name = " + name + ", age = " + age);// name = zhangsan, age = 20}/*** JSONArray*/@Testpublic void test3() {// JSONObject内嵌JSONArrayJSONObject json = new JSONObject();json.put("name", "zhangsan");json.put("age", 20);JSONObject json3 = new JSONObject();json3.put("math", 90);json3.put("english", 88);JSONArray array = new JSONArray();array.add(json3);json.put("class", array);System.out.println(json);// {"name":"zhangsan","age":20,"class":[{"math":90,"english":88}]}JSONArray jsonArray = json.getJSONArray("class");System.out.println(jsonArray.toString());// [{"math":90,"english":88}]// 创建JSONArrayJSONArray jsonArray2 = new JSONArray();jsonArray2.add(0, "zhangsan");jsonArray2.add(1, "lisi");jsonArray2.element(2, "wangwu");System.out.println(jsonArray2);// ["zhangsan", "lisi", "wangwu"]// 解析Object object = jsonArray2.get(0);System.out.println(object);// zhangsan}
}
(3)json-simple的使用
<dependency><groupId>com.googlecode.json-simple</groupId><artifactId>json-simple</artifactId><version>1.1.1</version>
</dependency>
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.junit.Test;public class JSONSimple {@Testpublic void test1() throws ParseException {// 创建JSONObject obj = new JSONObject();obj.put("name", "zhangsan");obj.put("age", 20);obj.put("tel", "15000000000");System.out.println(obj);// 解析JSONParser parser = new JSONParser();JSONObject json = (JSONObject) parser.parse(obj.toString());System.out.println(json);Object name = json.get("name");Object age = json.get("age");System.out.println("name = " + name + ", age = " + age);}
}
(4)gson的使用
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version>
</dependency>
public class Person {private String name;private int age;
}
-----------------------------------------------------------------------------import org.junit.Test;
import com.google.gson.Gson;public class GSONTest {@Testpublic void test() {Gson gson = new Gson();Person person = new Person();person.setName("zhangsan");person.setAge(20);String json = gson.toJson(person);System.out.println(json);// {"name":"zhangsan","age":20}Person fromJson = gson.fromJson(json, Person.class);System.out.println(fromJson);// Person [name=zhangsan, age=20]}
}
(5)jackson的使用
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.2</version>
</dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</version>
</dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.2</version>
</dependency>
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zzs.json.bean.Person;public class JacksonTest {@Testpublic void test1() throws IOException {Person person = new Person();person.setName("zhangsan");person.setAge(20);/*** ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。* ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。* writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。* writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。* writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。* writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。*/ObjectMapper mapper = new ObjectMapper();// User类转JSONString json = mapper.writeValueAsString(person);// 输出结果:{"name":"zhangsan","age":20}System.out.println(json);// JSON解析Person readValue = mapper.readValue(json, Person.class);// 输出结果:Person [name=zhangsan, age=20]System.out.println(readValue);}
}
(6)fastjson的使用
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.42</version>
</dependency>
方法入口:
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。
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;public class FastjsonTest {/*** 创建JSON*/@Testpublic void test1() {// 创建一个 Person 对象Person person = new Person();person.setName("zhangsan");person.setAge(20);// 将 Person 对象转为 json 字符串String json = JSON.toJSONString(person);// 输出结果:{"age":20,"name":"zhangsan"}System.out.println(json);// 将 Person 对象转为 json 字符串, 这个字符串是经过格式化的String format_json = JSON.toJSONString(person, true);System.out.println(format_json);}@Testpublic void test2() {String json_array = "[{\"age\":20,\"name\":\"zhangsan\"},{\"age\":22,\"name\":\"lisi\"}]";// 将 json 字符串转为 JSONArray 对象JSONArray array = JSON.parseArray(json_array);System.out.println(array);// 将 json 字符串转为 List 集合List<Person> list = JSON.parseArray(json_array, Person.class);for (Person person : list) {System.out.println(person);}}/*** JSON解析*/@Testpublic void test3() {String json = "{\"age\":20,\"name\":\"zhangsan\"}";// 将 json 字符串转为 JSONObject 对象JSONObject object = JSON.parseObject(json);System.out.println(object);// 将 json 字符串转为 Student 对象Person person = JSON.parseObject(json, Person.class);System.out.println(person);}
}
几种常用的JSON解析工具的使用相关推荐
- Java:JSON解析工具-org.json
一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...
- Java常用的几种JSON解析工具
一.Gson:Google开源的JSON解析库 1.添加依赖 <!--gson--> <dependency><groupId>com.google.code.gs ...
- 一文吃透Json解析工具类合集(FastJson、Jackson、Gson)
Json解析工具类 前言 一.各个JSON技术的简介 1.1 FastJson角色 1.2 Jackson角色 1.3 Gson角色 二.使用步骤 2.1 引入库 1.FastJson依赖 2.Jac ...
- json解析工具(json解析工具 python)
常用的xml,json解析工具有哪些 1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可 ...
- Json解析工具Jackson(使用注解)
接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给我们提供了一系列注解,提高了开发的灵活性,下面介绍一下最常用的一些注解 @JsonIgnoreProperties ...
- JSON解析工具比较,主要GSON和FastJSON
转自:http://www.cnblogs.com/kunpengit/p/4001680.html 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的 ...
- FastJson快速上手【Json解析工具】
目录 一.spring boot工程中引入FastJson依赖 二.调用JSON类的静态方法直接进行json序列化和反序列化 2.1 序列化 2.2 反序列化 三.快速演示: 四.思考 五.web案例 ...
- [Android开发] Json解析工具类,一个类搞定Json的解析
一.简介 利用递归的方式反射解析到bean里面 二.详细代码 1. Json格式 例如服务器指定规定json格式为: {"code": "--" , // 返回 ...
- 自定义Json解析工具
此博客为博主原创文章,转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10689536.html fastjson是很好用的json解析工具,只可惜项目中要 ...
- java 自定义json解析注解 复杂json解析 工具类
java 自定义json解析注解 复杂json解析 工具类 目录 java 自定义json解析注解 复杂json解析 工具类 1.背景 2.需求-各式各样的json 一.一星难度json[json对象 ...
最新文章
- 【技术】交换机上如何对流量拦截
- Flink从入门到放弃之源码解析系列-第1章 Flink组件和逻辑计划
- 建立能持续处理请求的Server端改造
- [html] 你认为一个好的布局应该是什么样的?有哪些需要注意的地方?
- lua打开浏览器并加载网页_Lua访问网页
- 网络游戏中网络模块浅析
- _04媒体文件的读取
- python上机实验报告读取文件_Python程序设计实验报告八:文件
- VMware 共享目录不显示的解决办法
- android viewpager实现画廊效果,ViewPager实现2D、3D画廊效果
- 数字图像处理实验之对数变换
- Java 数组的三种创建方法
- java版精简搜狗皮肤
- web端实现视频播放,视频地址切换,清晰度切换,断点续播
- 在浏览器输入URL,按下回车之后的流程?
- 关于微信小程序跳转到H5,然后从H5又跳回微信小程序问题的资料
- FileZilla下载地址
- Power BI中突出显示矩阵的最大值与最小值
- 哈工大计算机科学与捄术学院,[哈尔滨工业大学]管理科学与工程
- 新加坡企业是怎么做实名认证的?
热门文章
- protues仿真器51单片机定时器内部定时方式
- 计算机专业的核心课程,计算机专业核心课程
- 《Java核心技术 卷1》
- 计算机毕业设计-springboot疫情管理系统-社区防疫管理系统java-小区预防疫情统计管理系统代码
- 同时处理知网、万方、维普数据库——CiteSpace、Ucinet、Vosviewer等
- cad插件_CAD插件迷你建筑工具箱4.0
- isight2019安装教程_DS SIMULIA Suite 2019 (Abaqus/Isight/Fe-safe/Tosca) Win/Linux x64
- lammps教程:EAM势函数设置详解
- NekoHtml 解析内容时需要注意的地方
- vb.net mysql 实例教程_VB.NET数据库编程基础教程(转载