基本的json格式

{
"name": "jobs",
"boolean": true,
"age": null,
"num": 88
}

json对象

{
"starcraft": {
"INC": "Blizzard",
"price": 60
}
}

json数组

{
"person": [
"jobs",
60
]
}

json对象数组

{
"array": [
{
"name": "jobs"
},
{
"name": "bill",
"age": 60
},
{
"product": "war3",
"type": "game",
"popular": true,
"price": 60
}
]
}

常见的JSON解析工具

json-lib的net.sf.json的json处理包

  优点:老牌,应用广泛

  缺点:jar包依赖多、转换成bean存在不足(bean里面存在list集合,map等)、性能不足

  依赖jar包:

    - commons-beanutils-1.8.0.jar    

    - commons-collections-3.2.1.jar

    - commons-lang-2.5.jar

    - commons-logging-1.1.1.jar

    - ezmorph-1.0.6.jar

    - json-lib-2.4-jdk15.jar

阿里巴巴官方出的fastjson处理包

  优点:高性能,不需要额外的jar,可以直接跑在jdk上面,速度极致

  缺点:bean转换为json时可能会存在错误(类型上面)

谷歌官方出品的Gson

  优点:无依赖,直接跑在jdk上,只要存在getter、setter方法就可以解析,神器!

  缺点:必须在对象转换之前创建好对象的类型以及其成员,性能稍差

json-lib对json数据的处理

package com.glorze.json;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class JsonlibUtil {
public static void main(String[] args) {
Set<Book> bookSet = new HashSet<Book>();
Book book=new Book();
book.setId("0808");
book.setName("基督山伯爵");
bookSet.add(book); Student student = new Student();
student.setName("高老四");
student.setAge(25);
student.setDescribe("男神、帅哥");
student.setSex("男");
student.setBooks(bookSet); //Bean转换成json字符串
String json = JSONObject.fromObject(student).toString();
System.out.println("Bean转换成Json:"+json); //json转Bean
String jsonStr = "{\"id\":\"2\",\"name\":\"Json技术\"}";
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
Book book2 = (Book) JSONObject.toBean(jsonObject,Book.class);
System.out.println("json字符串转Bean:"+book2.toString()); //json转换成List(Set同理)
String jsonStr2 = "[{\"id\":\"1\",\"name\":\"Java技术\"},{\"id\":\"2\",\"name\":\"Json技术\"}]";
JSONArray jsonArray = JSONArray.fromObject(jsonStr2);
JSONObject jsonObject2 = null;
Book book3 = null;
int size = jsonArray.size();
List list = new ArrayList(size);
for (int i = 0; i < size; i++) {
jsonObject2 = jsonArray.getJSONObject(i);
book3 = (Book) JSONObject.toBean(jsonObject, Book.class);
list.add(book3);
}
System.out.println("json字符串转List:"+JSONArray.fromObject(list).toString());
}
}

fastjson对json数据的处理

package com.glorze.json;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference; public class FastjsonUtil {
public static void main(String[] args) {
Set<Book> bookSet = new HashSet<Book>();
Book book=new Book();
book.setId("0808");
book.setName("基督山伯爵");
bookSet.add(book); Student student = new Student();
student.setName("高老四");
student.setAge(25);
student.setDescribe("男神、帅哥");
student.setSex("男");
student.setBooks(bookSet); //Bean转换成json字符串
String json=JSON.toJSONString(student, false);// true:格式化 false(默认):不格式化
System.out.println("Bean转换成Json:"+json); //json转Bean
String jsonStr = "{\"id\":\"2\",\"name\":\"Json技术\"}";
Book book2 = JSON.parseObject(jsonStr,Book.class);
System.out.println("json字符串转Bean:"+book2.toString()); //json转换成List(Set同理)
String jsonStr2 = "[{\"id\":\"1\",\"name\":\"Java技术\"},{\"id\":\"2\",\"name\":\"Json技术\"}]";
List<Book> bookList = JSON.parseObject(jsonStr2,new TypeReference<ArrayList<Book>>(){});
System.out.println("json字符串转List:"+JSON.toJSONString(bookList,true)); }
}

Gson对json数据的处理

package com.glorze.json;

import java.util.HashSet;
import java.util.List;
import java.util.Set; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; public class GsonUtil {
public static void main(String[] args) { Set<Book> bookSet = new HashSet<Book>();
Book book=new Book();
book.setId("0808");
book.setName("基督山伯爵");
bookSet.add(book); Student student = new Student();
student.setName("高老四");
student.setAge(25);
student.setDescribe("男神、帅哥");
student.setSex("男");
student.setBooks(bookSet); //bean转换成json
Gson gson = new Gson();
String json = gson.toJson(student);
System.out.println("Bean转换成Json:"+json); //json转Bean
String jsonStr = "{\"id\":\"2\",\"name\":\"Json技术\"}";
Book book2 = gson.fromJson(jsonStr, Book.class);
System.out.println("json字符串转换成Bean:"+book2.toString()); //json转换成List(Set同样)
String jsonList = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]";
List<Book> bookList = gson.fromJson(jsonList, new TypeToken<List<Book>>(){}.getType());
String listJson = gson.toJson(bookList);
System.out.println("json转换成List:"+listJson); }
}

附三个封装工具类

JsonlibUtil.java FastjsonUtil.java GsonUtil.java

下载地址

网盘链接:http://pan.baidu.com/s/1c2mu1Ni 密码:72qh

更多内容请查看 高老四博客

JSON总结-持续更新补充的更多相关文章

  1. ubuntu命令总结 持续更新 补充

    总结一下Ubuntu常用命令   top sudo apt-get install 软件名 安装软件命令 sudo nautilus 打开文件(有root权限) su root 切换到“root” l ...

  2. iOS之github第三方框架(持续更新)

    1.MBProgressHUD MBProgressHUD是一个开源项目,实现了很多种样式的提示框 使用上简单.方便,并且可以对显示的内容进行自定义,功能很强大,很多项目中都有使用到. 到Github ...

  3. github 上有趣又实用的前端项目(持续更新,欢迎补充)

    github 上有趣又实用的前端项目(持续更新,欢迎补充) 1. reveal.js: 幻灯片展示框架 一个专门用来做 HTML 幻灯片的框架,支持 HTML 和 Markdown 语法. githu ...

  4. 总结js常用函数和常用技巧(持续更新)

    学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...

  5. 白话kubernetes的十万个为什么(持续更新中...) - kubernetes

    Kubernetes简称? 答:k8s或kube. Kubernetes是什么? 答:由Google开发的一个强大的平台,可以在集群环境中管理容器化应用程序.本质上是一种特殊的数据库,里面存储的是能够 ...

  6. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  7. BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js

    BAT 前端开发面经 —— 吐血总结   目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...

  8. vue-qiankun公司微前端项稳定目落地后的总结(附github仓库demo,将会持续更新)

    ️本文为博客园社区首发文章,未获授权禁止转载 大家好,我是aehyok,一个住在深圳城市的佛系码农‍♀️,如果你喜欢我的文章,可以通过点赞帮我聚集灵力️. 个人github仓库地址: https:gi ...

  9. 神技!微信小程序(应用号)抢先入门教程(附最新案例DEMO-豆瓣电影)持续更新

    微信小程序 Demo(豆瓣电影) 由于时间的关系,没有办法写一个完整的说明,后续配合一些视频资料,请持续关注 官方文档:https://mp.weixin.qq.com/debug/wxadoc/de ...

随机推荐

  1. Java发布一个简单 webservice应用 并发送SOAP请求

    一.创建并发布一个简单的webservice应用 1.webservice 代码: package com.ls.demo; import javax.jws.WebMethod; import ja ...

  2. WEB服务器如何选择 Apache or Nginx?

    Web服务器是直接影响网站性能的关键因素,也是每个站长选择网站运营环境时必然考虑的问题.目前Web服务器市场产品众多,最为主流和代表性的当属Apache.Nginx以及微软的IIS.本文目的是通过Ap ...

  3. [刷题]算法竞赛入门经典(第2版) 5-2/UVa1594 - Ducci Sequence

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,20 ms) //UVa1594 - Ducci Sequence #include< ...

  4. tomcat启动一闪而过问题的解决

    1.今天使用startup.bat启动tomcat报错,现象是一闪而过,在logs文件夹中有没有日志文件, 可以在控制台输入startup.bat,如下:   但是也没有看出什么太有用的错误,然后可以 ...

  5. DDD理论学习系列(2)-- 领域

    DDD理论学习系列目录 1. 引言 领域一词,主要有以下两个意思: 一国主权所达之地. 学术思想或社会活动的范围. 不管是指国家的主权范围也好还是学术活动范围,都是在讲一个范围,一个界限. 比如我们常 ...

  6. eclipse C 开发 Stm32

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.下载eclipse需要的运行环境,JDK/JRE. 在http://wiki.eclipse.org/Eclipse/Installation ...

  7. Hibernate学习笔记二:Hibernate缓存策略详解

    一:为什么使用Hibernate缓存: Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序访问物理数据库的频次,从而提高应用程序的性能. 缓存内的数据是对物理数据源的复制,应用 ...

  8. jQuery中易混淆知识点总结(持续更新)

    find()与children() <body> <ul class="level-1"> <li class="item-i"& ...

  9. AjaxPro.AjaxMethod 简单应用,

    用AjaxPro无刷新实现站内信息实时提示功能,用AjaxPro.2.dll实现表数据绑定和无刷新分页 首先,必不可少的就是dll-----AjaxPro.2 下载地址:http://down7.pc ...

  10. ELK菜鸟手记 (四) - 利用filebeat和不同端口把不同服务器上的log4j日志传输到同一台ELK服务器

    1. 问题描述  我们需要将不同服务器(如Web Server)上的log4j日志传输到同一台ELK服务器,介于公司服务器资源紧张(^_^) 2. 我们需要用到filebeat 什么是filebeat ...