FastJson学习

1.前言

1.1.FastJson的介绍:

JSON协议使用方便,愈来愈流行,JSON的处理器有不少,这里我介绍一下FastJson,FastJson是阿里的开源框架,被很多企业使用,是一个极其优秀的Json框架,Github地址: FastJsonjava

1.2.FastJson的特色:

1.FastJson数度快,不管序列化和反序列化,都是当之无愧的fast 
2.功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum) 
3.零依赖(没有依赖其它任何类库)git

1.3.FastJson的简单说明:

FastJson对于json格式字符串的解析主要用到了下面三个类: 
1.JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换 
2.JSONObject:fastJson提供的json对象 
3.JSONArray:fastJson提供json数组对象github

2.FastJson的用法

首先定义三个json格式的字符串json

  • 简单对象型
 
 
//json字符串-简单对象型 private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";

{
"studentName": "lily", "studentAge": 12 }

 

  • 数组类型
 
 
//json字符串-数组类型 private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";


[ {
"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}]}";


{
"teacherName": "crystall", "teacherAge": 27, "course": { "courseName": "english", "code": 1270 }, "students": [ { "studentName": "lily", "studentAge": 12 }, { "studentName": "lucy", "studentAge": 15 } ] }

 

2.1.JSON格式字符串与JSON对象之间的转换

2.1.1.json字符串-简单对象型与JSONObject之间的转换

/**
 * json字符串-简单对象型到JSONObject的转换
 */
@Test
public void testJSONStrToJSONObject() {

    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);

    System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "
            + jsonObject.getInteger("studentAge"));

}

/**
 * JSONObject到json字符串-简单对象型的转换
 */
@Test
public void testJSONObjectToJSONStr() {

    //已知JSONObject,目标要转换为json字符串
    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);
    // 第一种方式
    String jsonString = JSONObject.toJSONString(jsonObject);

    // 第二种方式
    //String jsonString = jsonObject.toJSONString();
    System.out.println(jsonString);
}

2.1.2.json字符串(数组类型)与JSONArray之间的转换

/**
 * json字符串-数组类型到JSONArray的转换
 */
@Test
public void testJSONStrToJSONArray() {

    JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);

    //遍历方式1
    int size = jsonArray.size();
    for (int i = 0; i < size; i++) {

        JSONObject jsonObject = jsonArray.getJSONObject(i);
        System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "
                + jsonObject.getInteger("studentAge"));
    }

    //遍历方式2
    for (Object obj : jsonArray) {

        JSONObject jsonObject = (JSONObject) obj;
        System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "
                + jsonObject.getInteger("studentAge"));
    }
}

/**
 * JSONArray到json字符串-数组类型的转换
 */
@Test
public void testJSONArrayToJSONStr() {

    //已知JSONArray,目标要转换为json字符串
    JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);
    //第一种方式
    String jsonString = JSONArray.toJSONString(jsonArray);

    // 第二种方式
    //String jsonString = jsonArray.toJSONString(jsonArray);
    System.out.println(jsonString);
}
相关文章
相关标签/搜索