欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

Android使用fastjson库解析json字符串实战,

来源: 开发者 投稿于  被查看 39431 次 评论:64

Android使用fastjson库解析json字符串实战,


目录
  • 什么是Fastjson
    • Fastjson具有以下特点:
  •  fastjson使用快速入门示例
    • 1、在Android项目中使用Fastjson,可以通过以下方式进行安装和导入:
    • 2、在MainActivity.java文件中添加如下代码
    • 3、新建Student.java文件并定义如下Java Bean类
    • 4、运行程序并查看输出结果,效果如下
  • 三、 fastjson常用API介绍
    • 1、将Json字符串转换为Java对象
    • 2、将Java对象转换为Json字符串
    • 3、获取JsonObject对象
    • 4、获取JsonArray数组
    • 5、序列化和反序列化null对象
  • 四、 fastjson使用技巧
    • 1、解析复杂Json对象
    • 2、序列化和反序列化不同类型的对象
  • 五、总结

    随着移动应用的普及和数据交互的需求增加,开发人员需要使用一种高效、便捷的方式来进行数据的序列化和反序列化。 fastjson是一个Java语言编写的高性能功能完善的 JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。

    什么是Fastjson

    Fastjson是由阿里巴巴集团开发的一款开源JSON库。它提供了一种简单且高效的方式来处理JSON数据,包括JSON的序列化和反序列化。在Android开发中,Fastjson被广泛应用于网络请求、数据缓存、数据解析等场景。

    Fastjson具有以下特点:

    快速高效:Fastjson采用了一系列优化手段,使得它在JSON的序列化和反序列化过程中具有很高的性能。
    易于使用:Fastjson提供了简单的API,开发人员可以轻松地进行JSON数据的处理。
    支持灵活的格式化:Fastjson支持自定义序列化和反序列化规则,可以满足不同场景下的需求。
    广泛应用:Fastjson在阿里巴巴集团以及许多其他公司的移动应用中被广泛使用。

     fastjson使用快速入门示例

    1、在Android项目中使用Fastjson,可以通过以下方式进行安装和导入:

    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字符串转换为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"}

    三、 fastjson常用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

    四、 fastjson使用技巧

    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就是Java语言下用于解析json字符串的类库,它提供了丰富的API,可以帮助开发人员轻松解析json字符串。

    到此这篇关于Android使用fastjson库解析json字符串实战的文章就介绍到这了,更多相关Android使用fastjson库内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

    您可能感兴趣的文章:
    • Android之解析JSON数据示例(android原生态,FastJson,Gson)
    • 详解Android原生json和fastjson的简单使用

    用户评论