什么是JSON对象
{
"ID": 1001,
"name": "张三",
"age": 24
}
//第一个数据就是一个Json对象,观察它的数据形式,可以得出以下语法:
//1:数据在花括号中
//2:数据以"键:值"对的形式出现(其中键多以字符串形式出现,值可取字符串,数值,甚至其他json对象)
//3:每两个"键:值"对以逗号分隔(最后一个"键:值"对省略逗号)
什么是JSON对象数组
[
{"ID": 1001, "name": "张三", "age": 24},
{"ID": 1002, "name": "李四", "age": 25},
{"ID": 1003, "name": "王五", "age": 22}
]
// 1:数据在方括号中(可理解为数组)
// 2:方括号中每个数据以json对象形式出现
// 3:每两个数据以逗号分隔(最后一个无需逗号)
// 遵守上面3点,便可形成一个json对象数组(及一个数组中,存储了多个json对象)
jar介绍
fastjson.jar是阿里爸爸开发的一款专门用于Java开发的包,可以方便的
实现json对象与JavaBean对象的转换,
实现JavaBean对象与json字符串的转换,
实现json对象与json字符串的转换。
除了这个fastjson以外,还有Google开发的Gson包,其他形式的如net.sf.json包,
都可以实现json的转换。方法名称不同而已,最后的实现结果都是一样的。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.61</version>
</dependency>
简单分析
主要的3个类,JSON,JSONArray,JSONObject
三者之间的关系如下,JSONObject和JSONArray继承JSON
SONObject实现了Map接口,而json对象中的数据都是以"键:值"对形式出现,可以猜想, JSONObject底层操作是由Map实现的。
JSONObject对应json对象,通过各种形式的get()方法可以获取json对象中的数据,也可利用诸如size(),isEmpty()等方法获取"键:值"对的个数和判断是否为空。其本质是通过实现Map接口并调用接口中的方法完成的。
观察JSONArray的继承与实现,并结合上面对JSONObject的分析,不难发现,其内部是有List接口中的方法来完成操作的。
因为JSONArray代表json对象数组,json数组对象中存储的是一个个json对象,所以类中的方法主要用于直接操作json对象。比如这其中的add(),remove(),containsAll()方法,对应于json对象的添加,删除与判断。
先创建一个javabean
public class Student {
private String name;
private int age;
public Student () { }
public Student (String name, int age) {
this.name=name;
this.age=age;
}
// setter getter
@Override
public String toString () {
// TODO Auto-generated method stub
return "student [name="+name+" , "+"age="+age+"]";
}
}
Test.java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class TestFastJson {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
Student student=new Student("bob",24);
Student student12=new Student("lily", 23);
list.add(student);
list.add(student12);
System.out.println ("*******javaBean to jsonString*******");
String str1= JSON.toJSONString(student);
System.out.println(str1); // {"age":24,"name":"bob"}
System.out.println(JSON.toJSONString(list));
System.out.println(); // [{"age":24,"name":"bob"},{"age":23,"name":"lily"}]
System.out.println("******jsonString to javaBean*******");
//Student stu1=JSON.parseObject(str1,new TypeReference<Student>(){});
Student stu1=JSON.parseObject(str1,Student.class);
System.out.println(stu1); // com.kuang.cpt.Student@573fd745
System.out.println();
System.out.println("******javaBean to jsonObject******");
JSONObject jsonObject1=(JSONObject)JSON.toJSON(student);
System.out.println(jsonObject1.getString("name")); // bob
System.out.println();
System.out.println("******jsonObject to javaBean******");
Student student2=JSON.toJavaObject(jsonObject1, Student.class);
System.out.println(student2); // com.kuang.cpt.Student@722c41f4
System.out.println();
System.out.println("*******javaBean to jsonArray******");
List<Student> stulist=new ArrayList<Student>();
for(int i=0;i<5;i++){
stulist.add(new Student("student"+i, i));
}
JSONArray jsonArrays=(JSONArray)JSON.toJSON(stulist);
for(int i=0;i<jsonArrays.size();i++){
System.out.println(jsonArrays.getJSONObject(i));
}
// {"name":"student0","age":0}
// {"name":"student1","age":1}
// {"name":"student2","age":2}
// {"name":"student3","age":3}
// {"name":"student4","age":4}
System.out.println("=====================================================");
System.out.println("***** jsonArry to javalist ******");
List<Student> myList=new ArrayList<Student>();
for(int i=0;i<jsonArrays.size();i++){
Student student3=JSON.toJavaObject(jsonArrays.getJSONObject(i), Student.class);
myList.add(student3);
}
for(Student stu:myList){
System.out.println(stu);
}
// com.kuang.cpt.Student@50134894
// com.kuang.cpt.Student@2957fcb0
// com.kuang.cpt.Student@1376c05c
// com.kuang.cpt.Student@51521cc1
// com.kuang.cpt.Student@1b4fb997
System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
System.out.println("*****jsonObject to jsonString*****");
String str4=JSON.toJSONString(jsonObject1);
System.out.println(str4); // {"name":"bob","age":24}
System.out.println();
System.out.println("*******jsonString to jsonObject*****");
JSONObject jso1=JSON.parseObject(str1);
System.out.println(jso1.getString("name")); // bob
System.out.println();
System.out.println("*****jsonString to jsonArray*****");
JSONArray jArray=JSON.parseArray(JSON.toJSONString(stulist));
for(int i=0;i<jArray.size();i++){
System.out.println(jArray.getJSONObject(i));
}
// {"name":"student0","age":0}
// {"name":"student1","age":1}
// {"name":"student2","age":2}
// {"name":"student3","age":3}
// {"name":"student4","age":4}
System.out.println();
}
}
参考链接:https://blog.csdn.net/srj1095530512/article/details/82529759
参考文章中分析得很好,值得学习,十分感谢!
如有侵权,请联系删除