fastjson介绍
fastjson是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
主要特点:
快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
零依赖(没有依赖其它任何类库除了JDK)
fastjson使用
FastJson对于json格式字符串的解析主要用到了下面三个类:
1.JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换
2.JSONObject:fastJson提供的json对象
3.JSONArray:fastJson提供json数组对象
JSONObject当成一个Map来看,只是JSONObject提供了更为丰富便捷的方法,方便我们对于对象属性的操作。我们看一下源码。
JSONArray当做一个List,可以把JSONArray看成JSONObject对象的一个集合。
定义三个json格式的字符串作为数据源:
//json字符串-简单对象型
private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";
//json字符串-数组类型
private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
//复杂格式json字符串
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对象之间的转换。
示例1.1-json字符串-简单对象型与JSONObject之间的转换
JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR); System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
示例1.2-json字符串-数组类型与JSONArray之间的转换
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-复杂json格式字符串与JSONObject之间的转换
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之间的转换。
首先,创建三个与数据源相应的javaBean。此处略
示例2.1-json字符串-简单对象型与javaBean之间的转换
Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference() {}); System.out.println(student.getStudentName()+":"+student.getStudentAge());
示例2.2-json字符串-数组类型与javaBean之间的转换
ArrayList students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference>() {});
for (Student student : students) {
System.out.println(student.getStudentName()+":"+student.getStudentAge());
}
示例2.3-复杂json格式字符串与与javaBean之间的转换
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();
关于Fastjson的详细使用可以查看w3cschool的Fastjson的中文版API文档
网友评论