亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android使用fastjson庫解析json字符串實(shí)戰(zhàn)

 更新時(shí)間:2023年11月04日 10:50:25   投稿:yin  
fastjson是一個(gè)Java語言編寫的高性能功能完善的JSON庫,它采用一種“假定有序快速匹配”的算法,把JSON?Parse的性能提升到極致,是目前Java語言中最快的JSON庫,Fastjson接口簡單易用,已經(jīng)被廣泛使用在緩存序列化、協(xié)議交互、Web輸出、Android客戶端等多種應(yīng)用場景

隨著移動(dòng)應(yīng)用的普及和數(shù)據(jù)交互的需求增加,開發(fā)人員需要使用一種高效、便捷的方式來進(jìn)行數(shù)據(jù)的序列化和反序列化。 fastjson是一個(gè)Java語言編寫的高性能功能完善的 JSON庫。它采用一種“假定有序快速匹配”的算法,把JSON Parse的性能提升到極致,是目前Java語言中最快的JSON庫。Fastjson接口簡單易用,已經(jīng)被廣泛使用在緩存序列化、協(xié)議交互、Web輸出、Android客戶端等多種應(yīng)用場景。

什么是Fastjson

Fastjson是由阿里巴巴集團(tuán)開發(fā)的一款開源JSON庫。它提供了一種簡單且高效的方式來處理JSON數(shù)據(jù),包括JSON的序列化和反序列化。在Android開發(fā)中,F(xiàn)astjson被廣泛應(yīng)用于網(wǎng)絡(luò)請(qǐng)求、數(shù)據(jù)緩存、數(shù)據(jù)解析等場景。

Fastjson具有以下特點(diǎn):

快速高效:Fastjson采用了一系列優(yōu)化手段,使得它在JSON的序列化和反序列化過程中具有很高的性能。
易于使用:Fastjson提供了簡單的API,開發(fā)人員可以輕松地進(jìn)行JSON數(shù)據(jù)的處理。
支持靈活的格式化:Fastjson支持自定義序列化和反序列化規(guī)則,可以滿足不同場景下的需求。
廣泛應(yīng)用:Fastjson在阿里巴巴集團(tuán)以及許多其他公司的移動(dòng)應(yīng)用中被廣泛使用。

 fastjson使用快速入門示例

1、在Android項(xiàng)目中使用Fastjson,可以通過以下方式進(jìn)行安裝和導(dǎo)入:

dependencies {
    implementation 'com.alibaba:fastjson:1.2.73'
}

2、在MainActivity.java文件中添加如下代碼

import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private String jsonStr;

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

        jsonStr = "{\n" +
                "    \"name\": \"Tom\",\n" +
                "    \"age\": 21,\n" +
                "    \"score\": {\n" +
                "        \"math\": 90,\n" +
                "        \"english\": 87\n" +
                "    },\n" +
                "    \"hobby\": [\n" +
                "        \"study\",\n" +
                "        \"write\",\n" +
                "        \"run\"\n" +
                "    ]\n" +
                "}";
        //將Json字符串轉(zhuǎn)換為Java對(duì)象
        Student student = JSON.parseObject(jsonStr, Student.class);
        Log.i("MainActivity", "name=" + student.getName());
        Log.i("MainActivity", "age=" + student.getAge());

        //獲取Json對(duì)象
        JSONObject jsonObject = JSON.parseObject(jsonStr);
        int mathScore = jsonObject.getJSONObject("score").getIntValue("math");
        Log.i("MainActivity", "mathScore=" + mathScore);

        //獲取Json數(shù)組
        JSONArray jsonArray = jsonObject.getJSONArray("hobby");
        for (int i = 0; i < jsonArray.size(); i++) {
            String hobby = jsonArray.get(i).toString();
            Log.i("MainActivity", "hobby=" + hobby);
        }

        //將Java對(duì)象轉(zhuǎn)換為Json字符串
        Student newStudent = new Student("Bob", 23);
        String newJsonStr = JSON.toJSONString(newStudent);
        Log.i("MainActivity", "newJsonStr=" + newJsonStr);
    }
}

3、新建Student.java文件并定義如下Java Bean類

public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

4、運(yùn)行程序并查看輸出結(jié)果,效果如下

name=Tom
age=21
mathScore=90
hobby=study
hobby=write
hobby=run
newJsonStr={"age":23,"name":"Bob"}

三、 fastjson常用API介紹

1、將Json字符串轉(zhuǎn)換為Java對(duì)象

 String jsonStr = "{\"name\":\"Tom\", \"age\":21}";
 Student student = JSON.parseObject(jsonStr, Student.class);

2、將Java對(duì)象轉(zhuǎn)換為Json字符串

Teacher teacher = new Teacher("Lily", 35);
String jsonStr = JSON.toJSONString(teacher);
Log.i(TAG, jsonStr);

3、獲取JsonObject對(duì)象

String jsonStr = "{\"name\":\"Tom\", \"age\":21}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
String name = jsonObject.getString("name");
int age = jsonObject.getIntValue("age");

4、獲取JsonArray數(shù)組

String jsonStr = "[{\"name\":\"Tom\", \"age\":21},{\"name\":\"Jerry\", \"age\":23}]";
JSONArray jsonArray = JSON.parseArray(jsonStr);
for (int i = 0; i < jsonArray.size(); i++) {
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    String name = jsonObject.getString("name");
    int age = jsonObject.getIntValue("age");
    Log.i(TAG, "name=" + name + ", age=" + age);
}

5、序列化和反序列化null對(duì)象

// 將null轉(zhuǎn)化為JSON字符串
String nullJson = JSON.toJSONString(null);
Log.i(TAG, "nullJson=" + nullJson); //null

// 將null值的JSON字符串轉(zhuǎn)化為Object對(duì)象
Object nullObject = JSON.parse(nullJson);
Log.i(TAG, "nullObject=" + nullObject); //null

// 將Java對(duì)象序列化為JSON字符串
Student student = null;
String studentJson = JSON.toJSONString(student, SerializerFeature.WriteNullStringAsEmpty);
Log.i(TAG, "studentJson=" + studentJson); //{"name":"","age":0,null:null}

// 將JSON字符串反序列化為Java對(duì)象
Student newStudent = JSON.parseObject(studentJson, Student.class);
Log.i(TAG, "newStudent.getName()=" + newStudent.getName()); //""
Log.i(TAG, "newStudent.getAge()=" + newStudent.getAge()); //0
Log.i(TAG, "newStudent.getInfo()=" + newStudent.getInfo()); //null

四、 fastjson使用技巧

1、解析復(fù)雜Json對(duì)象

String jsonStr = "{\n" +
        "  \"error\": 0,\n" +
        "  \"reason\": \"成功\",\n" +
        "  \"result\": {\n" +
        "    \"stat\": \"1\",\n" +
        "    \"list\": [\n" +
        "      {\n" +
        "        \"stationno\": \"1\",\n" +
        "        \"content\": \"好孩子\"\n" +
        "      },\n" +
        "      {\n" +
        "        \"stationno\": \"2\",\n" +
        "        \"content\": \"天才\"\n" +
        "      }\n" +
        "    ]\n" +
        "  }\n" +
        "}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
JSONObject result = jsonObject.getJSONObject("result");
JSONArray jsonArray = result.getJSONArray("list");
List<Station> stationList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
    JSONObject obj = jsonArray.getJSONObject(i);
    Station station = JSON.toJavaObject(obj, Station.class);
    stationList.add(station);
}
Log.i(TAG, stationList.toString());

2、序列化和反序列化不同類型的對(duì)象

String jsonStr = "{\"name\":\"Tom\",\"value\":50}";
Object obj = JSON.parse(jsonStr);
if (obj instanceof Map) { //反序列化為Map對(duì)象
    Map<String, Object> map = (Map<String, Object>) obj;
    Log.i(TAG, map.get("name").toString() + "-" + map.get("value").toString());
} else if (obj instanceof MyObject) { //反序列化為Java對(duì)象
    MyObject myObject = (MyObject) obj;
    Log.i(TAG, myObject.getName() + "-" + myObject.getValue().toString());
}

MyObject myObject = new MyObject("John", 30);
String jsonText = JSON.toJSONString(myObject);
Log.i(TAG, jsonText); //{"content":["John",30]}

MyObject myObject2 = JSON.parseObject(jsonText, MyObject.class);
Log.i(TAG, myObject2.getName() + "-" +myObject2.getValue().toString());

五、總結(jié)

fastjson是Android開發(fā)中解析json數(shù)據(jù)的利器。我們通過上述內(nèi)容的學(xué)習(xí),可以將json字符串快速轉(zhuǎn)化成Java對(duì)象,結(jié)合快速入門中的示例,使你可以無縫的將Json格式數(shù)據(jù)序列化和反序列化。fastjson就是Java語言下用于解析json字符串的類庫,它提供了豐富的API,可以幫助開發(fā)人員輕松解析json字符串。

到此這篇關(guān)于Android使用fastjson庫解析json字符串實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)Android使用fastjson庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論