JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式,独立于编程语言的文本格式来存储和表示数据。Json数据的格式更加的简单,易读,前后端分离的项目主要就是使用json格式就行数据的传输。
Json主要有两种格式,一种是json对象,另一种就是json数组。
对象是一个无序的“‘名称/值’对”集合。一个对象以{左括号开始,}右括号结束。每个“名称”后跟一个:冒号;“‘名称/值’ 对”之间使用,逗号分隔,例如:
{
"id": 1,
"name": "zhangsan",
"age": 18
}
和普通的 JS 数组一样,JSON 表示数组的方式也是使用方括号 [],例如:
[
{
"id": 1,
"name": "zhangsan",
"age": 18
},
{
"id": 2,
"name": "lisi",
"age": 20
}
]
这里主要介绍两种json数据和Java相互转换的方式:JDK和阿里巴巴公司开发的fastjson
2.JDK导入相应的Maven坐标:
net.sf.json-lib json-lib-ext-spring1.0.2
创建一个Java对象(User)
public class User {
int id;
String name;
int age;
//生成对应的get、set、有参、无参、toString方法
}
2.1 JSONObject
JSONObject主要用于处理对象使用(也可以用来处理数组)
//java对象转换为json对象
JSONObject feiji = JSONObject.fromObject(new User(1, "feiji", 22));
System.out.println("json:"+feiji);
//json --> java
User user = (User) JSONObject.toBean(feiji, User.class);
System.out.println("java:"+user);
//处理数组
JSONArray jsonObject1 = JSONArray.fromObject(jsonString);
User[] list = (User[]) jsonObject1.toArray(jsonObject1, User.class);
输出结果如下:
json:{"age":22,"id":1,"name":"feiji"}
java:User{id=1, name='feiji', age=22}
2.2 JSONArray
JSONArray主要用于处理数组
//java --> json
ArrayList list1 = new ArrayList<>();
list1.add(new User(1,"zhangsan",22));
list1.add(new User(2,"lisi",23));
JSONArray jsonArray = new JSONArray();
jsonArray.add(list1);
System.out.println(jsonArray);
//json --> java
List list = (List) JSONArray.toCollection(jsonArray);
System.out.println(list);
3.FastJson
FastJson是阿里巴巴开源的Java对象和JSON格式字符串的快速转换的工具库,fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快。
使用前,首先要引入对应的Maven坐标:
3.1 对象转换com.alibaba fastjson1.2.79
//java --> json
String feiji = JSON.toJSONString(new User(1, "feiji", 22));
System.out.println(feiji);
//json --> java
String us = "{"id":1,"name":"zhangsan","age":18}";
User user = JSON.parseObject(feiji, User.class);
Object parse = JSON.parse(us);
System.out.println(user);
System.out.println(parse);
toJSONString和parseObject(parse)方法提供了很多的重载方式,供我们使用。3.2 数组转换
//json --> java
String jsonString = "[{"id":1,"name":"zhangsan","age":18}," +
"{"id":2,"name":"lisi","age":20}]";
List users = JSON.parseArray(jsonString, User.class);
for (int i = 0; i < users.size(); i++) {
System.out.println(users.get(i));
}
结果如下:
User{id=1, name='zhangsan', age=18}
User{id=2, name='lisi', age=20}
这里只是写了一部分功能(工作中用到,正好记录一下)。



