美文网首页
FastJSON学习笔记

FastJSON学习笔记

作者: 二枚目 | 来源:发表于2018-08-21 11:28 被阅读52次

    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文档

    相关文章

      网友评论

          本文标题:FastJSON学习笔记

          本文链接:https://www.haomeiwen.com/subject/saydiftx.html