fastjson介紹
fastjson是一個性能很好的 Java 語言實現(xiàn)的 JSON 解析器和生成器,來自阿里巴巴的工程師開發(fā)狐树。
主要特點:
快速FAST (比其它任何基于Java的解析器和生成器更快鼓寺,包括jackson)
強大(支持普通JDK類包括任意Java Bean Class刺桃、Collection儒拂、Map蹬碧、Date或enum)
零依賴(沒有依賴其它任何類庫除了JDK)
fastjson使用
FastJson對于json格式字符串的解析主要用到了下面三個類:
1.JSON:fastJson的解析器昂灵,用于JSON格式字符串與JSON對象及javaBean之間的轉(zhuǎn)換
2.JSONObject:fastJson提供的json對象
3.JSONArray:fastJson提供json數(shù)組對象
JSONObject當成一個Map來看避凝,只是JSONObject提供了更為豐富便捷的方法,方便我們對于對象屬性的操作眨补。我們看一下源碼管削。
JSONArray當做一個List,可以把JSONArray看成JSONObject對象的一個集合撑螺。
定義三個json格式的字符串作為數(shù)據(jù)源:
//json字符串-簡單對象型
private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";
//json字符串-數(shù)組類型
private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
//復(fù)雜格式j(luò)son字符串
private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";
示例1:JSON格式字符串與JSON對象之間的轉(zhuǎn)換含思。
示例1.1-json字符串-簡單對象型與JSONObject之間的轉(zhuǎn)換
JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR); System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
示例1.2-json字符串-數(shù)組類型與JSONArray之間的轉(zhuǎn)換
JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
//遍歷方式1
for (int i = 0; i < jsonArray.size(); i++){
JSONObject jsonObject = jsonArray.getJSONObject(i); System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}
//遍歷方式2 for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj; System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}
示例1.3-復(fù)雜json格式字符串與JSONObject之間的轉(zhuǎn)換
JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
String teacherName = jsonObject.getString("teacherName");
Integer teacherAge = jsonObject.getInteger("teacherAge");
JSONObject course = jsonObject.getJSONObject("course");
JSONArray students = jsonObject.getJSONArray("students");
示例2:JSON格式字符串與javaBean之間的轉(zhuǎn)換。
首先甘晤,創(chuàng)建三個與數(shù)據(jù)源相應(yīng)的javaBean含潘。此處略
示例2.1-json字符串-簡單對象型與javaBean之間的轉(zhuǎn)換
Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference() {}); System.out.println(student.getStudentName()+":"+student.getStudentAge());
示例2.2-json字符串-數(shù)組類型與javaBean之間的轉(zhuǎn)換
ArrayList students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference>() {});
for (Student student : students) {
System.out.println(student.getStudentName()+":"+student.getStudentAge());
}
示例2.3-復(fù)雜json格式字符串與與javaBean之間的轉(zhuǎn)換
Teacher teacher = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference() {});
String teacherName = teacher.getTeacherName();
Integer teacherAge = teacher.getTeacherAge();
Course course = teacher.getCourse();
List students = teacher.getStudents();
關(guān)于Fastjson的詳細使用可以查看w3cschool的Fastjson的中文版API文檔