JSON总结-持续更新补充
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON总结-持续更新补充相关的知识,希望对你有一定的参考价值。
基本的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总结-持续更新补充的主要内容,如果未能解决你的问题,请参考以下文章