Json之FastJson Gson Jackson(详解)

本文详细介绍了FastJson、Gson和Jackson这三种常用的Java JSON处理库,包括各自的特性、优缺点和性能比较。FastJson以其高速度和零依赖著称,Gson功能全面但性能稍逊,Jackson则在性能和灵活性之间取得平衡。在项目选型中,可根据性能和功能需求选择合适的库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.FastJson

需要引入 fastjson-1.2.40.jar包

FastJson的介绍:

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

FastJson的特点:

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

FastJson的简单说明:

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

FastJson的用法

首先定义三个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}]}";
JSON格式字符串与JSON对象之间的转换
  1. json字符串-简单对象型与JSONObject之间的转换
/**
 1. json字符串-简单对象型到JSONObject的转换
 */
@Test
public void testJSONStrToJSONObject() {
   
    JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);
    System.out.println("studentName:  " + jsonObject.getString("studentName") + ":" + "  studentAge:  "
            + jsonObject.getInteger("studentAge"));
}
/**
 2. 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);
}
  1. 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"));
    }
}

/**
 1. 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);
}
JSON格式字符串与javaBean之间的转换
  1. json字符串-简单对象型与javaBean之间的转换
/**
 * json字符串-简单对象到JavaBean之间的转换
 */
@Test</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值