目录

简介:

(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解析工具的使用相关推荐

  1. Java:JSON解析工具-org.json

    一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...

  2. Java常用的几种JSON解析工具

    一.Gson:Google开源的JSON解析库 1.添加依赖 <!--gson--> <dependency><groupId>com.google.code.gs ...

  3. 一文吃透Json解析工具类合集(FastJson、Jackson、Gson)

    Json解析工具类 前言 一.各个JSON技术的简介 1.1 FastJson角色 1.2 Jackson角色 1.3 Gson角色 二.使用步骤 2.1 引入库 1.FastJson依赖 2.Jac ...

  4. json解析工具(json解析工具 python)

    常用的xml,json解析工具有哪些 1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可 ...

  5. Json解析工具Jackson(使用注解)

    接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给我们提供了一系列注解,提高了开发的灵活性,下面介绍一下最常用的一些注解 @JsonIgnoreProperties ...

  6. JSON解析工具比较,主要GSON和FastJSON

    转自:http://www.cnblogs.com/kunpengit/p/4001680.html 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的 ...

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

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

  8. [Android开发] Json解析工具类,一个类搞定Json的解析

    一.简介 利用递归的方式反射解析到bean里面 二.详细代码 1. Json格式 例如服务器指定规定json格式为: {"code": "--" , // 返回 ...

  9. 自定义Json解析工具

    此博客为博主原创文章,转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10689536.html fastjson是很好用的json解析工具,只可惜项目中要 ...

  10. java 自定义json解析注解 复杂json解析 工具类

    java 自定义json解析注解 复杂json解析 工具类 目录 java 自定义json解析注解 复杂json解析 工具类 1.背景 2.需求-各式各样的json 一.一星难度json[json对象 ...

最新文章

  1. 【技术】交换机上如何对流量拦截
  2. Flink从入门到放弃之源码解析系列-第1章 Flink组件和逻辑计划
  3. 建立能持续处理请求的Server端改造
  4. [html] 你认为一个好的布局应该是什么样的?有哪些需要注意的地方?
  5. lua打开浏览器并加载网页_Lua访问网页
  6. 网络游戏中网络模块浅析
  7. _04媒体文件的读取
  8. python上机实验报告读取文件_Python程序设计实验报告八:文件
  9. VMware 共享目录不显示的解决办法
  10. android viewpager实现画廊效果,ViewPager实现2D、3D画廊效果
  11. 数字图像处理实验之对数变换
  12. Java 数组的三种创建方法
  13. java版精简搜狗皮肤
  14. web端实现视频播放,视频地址切换,清晰度切换,断点续播
  15. 在浏览器输入URL,按下回车之后的流程?
  16. 关于微信小程序跳转到H5,然后从H5又跳回微信小程序问题的资料
  17. FileZilla下载地址
  18. Power BI中突出显示矩阵的最大值与最小值
  19. 哈工大计算机科学与捄术学院,[哈尔滨工业大学]管理科学与工程
  20. 新加坡企业是怎么做实名认证的?

热门文章

  1. protues仿真器51单片机定时器内部定时方式
  2. 计算机专业的核心课程,计算机专业核心课程
  3. 《Java核心技术 卷1》
  4. 计算机毕业设计-springboot疫情管理系统-社区防疫管理系统java-小区预防疫情统计管理系统代码
  5. 同时处理知网、万方、维普数据库——CiteSpace、Ucinet、Vosviewer等
  6. cad插件_CAD插件迷你建筑工具箱4.0
  7. isight2019安装教程_DS SIMULIA Suite 2019 (Abaqus/Isight/Fe-safe/Tosca) Win/Linux x64
  8. lammps教程:EAM势函数设置详解
  9. NekoHtml 解析内容时需要注意的地方
  10. vb.net mysql 实例教程_VB.NET数据库编程基础教程(转载