android开发笔记之fastjson

fastjson

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

https://github.com/alibaba/fastjson/wiki/Quick-Start-CN
新手指南

https://github.com/alibaba/fastjson
fastjson github官网

fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。

fastjson的API十分简洁。

String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseObject("{...}", VO.class); //反序列化

demo

我是使用android studio测试验证:
(1)app\build.gradle

dependencies {
    implementation 'com.alibaba:fastjson:1.2.61'
    implementation 'com.alibaba:fastjson:1.1.71.android'
}

(2)MainActivity.java

package com.example.firstapp;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.alibaba.fastjson.JSON;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    private final String jsonFile1 = "test.json";
    private final String jsonFile2 = "test_list.json";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        testAlibabaFastjson();
    }

    private void testAlibabaFastjson() {
        Address address = new Address();
        address.setCity("city_01");
        address.setProvince("province_01");
        Student student = new Student();
        student.setAddress(address);
        student.setAge(10);
        student.setName("name_01");
        student.setSchool("school_01");

        Log.i(TAG,"=========================01====================================");
        Log.i(TAG,"JSON.toJSONString(address):" + JSON.toJSONString(address));
        Log.i(TAG,"JSON.toJSONString(student):" + JSON.toJSONString(student));

        Log.i(TAG,"=========================02====================================");
        Address address1  = JSON.parseObject(JSON.toJSONString(address),Address.class);
        Log.i(TAG,"address1:"+address1);
        Student student1  = JSON.parseObject(JSON.toJSONString(student),Student.class);
        Log.i(TAG,"student1:"+student1);

        Log.i(TAG,"=========================03====================================");
        ArrayList<Student> arrayList;

        String  jsonFile1String = GsonHelper.getAssetsJson(this,jsonFile1);
        Log.i(TAG,"jsonFile1String:" + jsonFile1String);
        arrayList = (ArrayList<Student>) JSON.parseArray(jsonFile1String,Student.class);
        for (int i = 0;i < arrayList.size();i++){
            Log.i(TAG,"arrayList.get(i):" + arrayList.get(i));
        }
        Log.i(TAG,"=========================04====================================");
        String  jsonFile2String = GsonHelper.getAssetsJson(this,jsonFile2);
        Log.i(TAG,"jsonFile2String:" + jsonFile2String);
        arrayList = (ArrayList<Student>) JSON.parseArray(jsonFile2String,Student.class);
        for (int i = 0;i < arrayList.size();i++){
            Log.i(TAG,"arrayList.get(i):" + arrayList.get(i));
        }
    }
}

测试输出日志:

I/MainActivity: =========================01====================================
I/MainActivity: JSON.toJSONString(address):{"city":"city_01","province":"province_01"}
I/MainActivity: JSON.toJSONString(student):{"address":{"city":"city_01","province":"province_01"},"age":10,"booleanKey":false,"name":"name_01","school":"school_01"}

I/MainActivity: =========================02====================================
address1:"province": province_01, "city": city_01
student1:"name": name_01,
    "age": 10,
    "booleanKey": false,
    "school": school_01,
    "address": "province": province_01, "city": city_01

I/MainActivity: =========================03====================================
jsonFile1String:
    [
      {
        "name":"Tom",
        "age":13,
        "booleanKey":true,
        "school":"T-school",
        "address":{"province":"广东","city":"惠州"}
      }
    ]
I/MainActivity: arrayList.get(i):"name": Tom,
    "age": 13,
    "booleanKey": true,
    "school": T-school,
    "address": "province": 广东, "city": 惠州

I/MainActivity: =========================04====================================
I/MainActivity: jsonFile2String:
    [
      {
        "name":"Tom",
        "age":13,
        "booleanKey":true,
        "school":"T-school",
        "address":{"province":"广东","city":"惠州"}
      },
      {
        "name":"Ketty",
        "age":23,
        "booleanKey":false,
        "school":"K-school",
        "address":{"province":"广东","city":"深圳"}
      },
      {
        "name":"John",
        "age":15,
        "booleanKey":true,
        "school":"J-school",
        "address":{"province":"广东","city":"广州"}
      }
    ]

I/MainActivity: arrayList.get(i):"name": Tom,
    "age": 13,
    "booleanKey": true,
    "school": T-school,
    "address": "province": 广东, "city": 惠州

I/MainActivity: arrayList.get(i):"name": Ketty,
    "age": 23,
    "booleanKey": false,
    "school": K-school,
    "address": "province": 广东, "city": 深圳

I/MainActivity: arrayList.get(i):"name": John,
    "age": 15,
    "booleanKey": true,
    "school": J-school,
    "address": "province": 广东, "city": 广州

参考

1.android开发笔记之gson
https://blog.csdn.net/hfreeman2008/article/details/105587834

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hfreeman2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值