1. <source id="nejs2"></source>
  2. <video id="nejs2"></video>
    <source id="nejs2"></source>
          1. 首頁 > 安卓筆記 > Android實戰:使用fastjson解析JSON數據

            Android實戰:使用fastjson解析JSON數據

            更新:

            一、 fastjson簡介

            fastjson是一個Java語言編寫的高性能和通用的JSON序列化和反序列化類庫,在阿里巴巴經濟體的大力推動下成長為了業內流行的JSON庫,具有反序列化飛速、易用性強、準確性高、兼容性好、靈活度高的特點。

            Json是一種輕量級的數據交換格式,它具有可讀性強、數據格式簡潔等特點,被廣泛應用于網頁開發、移動應用、Web API等場合。fastjson就是Java語言下用于解析json字符串的類庫,它提供了豐富的API,可以幫助開發人員輕松解析json字符串。

            二、快速入門

            1、新建Android項目并在build.gradle文件中添加fastjson庫的引用

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

            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字符串轉換為Java對象
                    Student student = JSON.parseObject(jsonStr, Student.class);
                    Log.i("MainActivity", "name=" + student.getName());
                    Log.i("MainActivity", "age=" + student.getAge());
            
                    //獲取Json對象
                    JSONObject jsonObject = JSON.parseObject(jsonStr);
                    int mathScore = jsonObject.getJSONObject("score").getIntValue("math");
                    Log.i("MainActivity", "mathScore=" + mathScore);
            
                    //獲取Json數組
                    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對象轉換為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、運行程序并查看輸出結果,效果如下

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

            三、常用API介紹

            1、將Json字符串轉換為Java對象

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

            2、將Java對象轉換為Json字符串

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

            3、獲取JsonObject對象

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

            4、獲取JsonArray數組

            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對象

            // 將null轉化為JSON字符串
            String nullJson = JSON.toJSONString(null);
            Log.i(TAG, "nullJson=" + nullJson); //null
            
            // 將null值的JSON字符串轉化為Object對象
            Object nullObject = JSON.parse(nullJson);
            Log.i(TAG, "nullObject=" + nullObject); //null
            
            // 將Java對象序列化為JSON字符串
            Student student = null;
            String studentJson = JSON.toJSONString(student, SerializerFeature.WriteNullStringAsEmpty);
            Log.i(TAG, "studentJson=" + studentJson); //{"name":"","age":0,null:null}
            
            // 將JSON字符串反序列化為Java對象
            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

            四、使用技巧

            1、解析復雜Json對象

            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、序列化和反序列化不同類型的對象

            String jsonStr = "{\"name\":\"Tom\",\"value\":50}";
            Object obj = JSON.parse(jsonStr);
            if (obj instanceof Map) { //反序列化為Map對象
                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對象
                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());

            五、總結

            fastjson是Android開發中解析json數據的利器。我們通過上述內容的學習,可以將json字符串快速轉化成Java對象,結合快速入門中的示例,使你可以無縫的將Json格式數據序列化和反序列化。

            如果你想要更深入了解fastjson庫的功能和用法,還可以查看官方文檔,用最好的工具解析最好的數據。

            文章目錄
            頂部 久久久久99精品成人片毛片_黃色A片三級三級三級无码_日本不卡高清视频v中文字幕_高清欧美视频一区二区
            1. <source id="nejs2"></source>
            2. <video id="nejs2"></video>
              <source id="nejs2"></source>