com.alibaba.fastjson 【vaynexiao】

什么是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

参考文章中分析得很好,值得学习,十分感谢!

如有侵权,请联系删除

发布了49 篇原创文章 · 获赞 103 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/vayne_xiao/article/details/104955065