开发者

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

开发者 https://www.devze.com 2023-11-09 11:38 出处:网络 作者: yin
目录什么是FastjsonFastjson具有以下特点: fastjson使用快速入门示例1、在android项目中使用Fastjson,可以通过以下方式进行安装和导入:2、在MainActivity.Java文件中添加如下代码3、新建Student.java文件并定
目录
  • 什么是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());
            Ljsog.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(jsonphpStr);
    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.getStri编程ng("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}
    
    // 将JSONwww.devze.com字符串反序列化为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(jFawWkqVsonStr);
    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库内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号