Android 利用FastJson解析Json数据

一.简介

FastJson是阿里巴巴开源的一个Json处理工具包,包括“序列化”和“反序列化”两部分。fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson,功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)。

 

 

 

 

 

二.FastJson解析配置

FastJson GItHub官方链接:https://github.com/alibaba/fastjson

 

implementation files('libs/fastjson-1.2.47.jar')

 

 

 

 

 

三.具体使用之  Json字符串转换成JavaBean

 

数据源

{"age":"20","name":"张三","sex":"男"}

 

 

方法使用

com.alibaba.fastjson.JSONObject object = JSON.parseObject(string);

 

 

代码

package com.example.myapplication;

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

import androidx.appcompat.app.AppCompatActivity;

import com.alibaba.fastjson.JSON;

public class MainActivity extends AppCompatActivity {

    private String string = "{\"age\":\"20\",\"name\":\"张三\",\"sex\":\"男\"}";

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

    private void testMethod() {
        com.alibaba.fastjson.JSONObject object = JSON.parseObject(string);
        String age = object.getString("age");
        String name = object.getString("name");
        String sex = object.getString("sex");

        Log.d("TAG", "age----:" + age);
        Log.d("TAG", "name----:" + name);
        Log.d("TAG", "sex----:" + sex);
    }


}

 

 

结果

D/TAG: age----:20
D/TAG: name----:张三
D/TAG: sex----:男

 

 

 

数据源

[{"age":"20","name":"张三","sex":"男"},{"age":"22","name":"小华","sex":"女"}]

 

 

方法使用

com.alibaba.fastjson.JSONArray array = JSON.parseArray(string);

 

 

代码

package com.example.myapplication;

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

import androidx.appcompat.app.AppCompatActivity;

import com.alibaba.fastjson.JSON;

public class MainActivity extends AppCompatActivity {

    private String string = "[{\"age\":\"20\",\"name\":\"张三\",\"sex\":\"男\"},{\"age\":\"22\",\"name\":\"小华\",\"sex\":\"女\"}]";

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

    private void testMethod() {
        com.alibaba.fastjson.JSONArray array = JSON.parseArray(string);
        int length = array.size();
        for (int i = 0; i < length; i++) {
            com.alibaba.fastjson.JSONObject jsonObject = array.getJSONObject(i);
            String ages = jsonObject.getString("age");
            String names = jsonObject.getString("name");
            String sexs = jsonObject.getString("sex");
            Log.d("TAG", "ages----:" + ages);
            Log.d("TAG", "names----:" + names);
            Log.d("TAG", "sexs----:" + sexs);
        }
    }


}

 

 

结果

D/TAG: ages----:20
D/TAG: names----:张三
D/TAG: sexs----:男

D/TAG: ages----:22
D/TAG: names----:小华
D/TAG: sexs----:女

 

 

 

 

数据源

{"result":[{"sex":"男","age":"20","name":"张三"},{"sex":"女","age":"22","name":"小华"},{"sex":"男","age":"25","name":"李四"},{"sex":"女","age":"27","name":"小丽"}],"school":"清华大学","error":false}

 

 

方法使用

com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(string);

com.alibaba.fastjson.JSONArray jsonArray = jsonObject.getJSONArray("result");

 

 

代码

package com.example.myapplication;

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

import androidx.appcompat.app.AppCompatActivity;

import com.alibaba.fastjson.JSON;

public class MainActivity extends AppCompatActivity {

    private String string = "{\"result\":[{\"sex\":\"男\",\"age\":\"20\",\"name\":\"张三\"},{\"sex\":\"女\",\"age\":\"22\",\"name\":\"小华\"},{\"sex\":\"男\",\"age\":\"25\",\"name\":\"李四\"},{\"sex\":\"女\",\"age\":\"27\",\"name\":\"小丽\"}],\"school\":\"清华大学\",\"error\":false}";

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

    private void testMethod() {
        com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(string);
        com.alibaba.fastjson.JSONArray jsonArray = jsonObject.getJSONArray("result");
        int lengths = jsonArray.size();
        for (int i = 0; i < lengths; i++) {
            com.alibaba.fastjson.JSONObject jsonObjects = jsonArray.getJSONObject(i);
            String sexss = jsonObjects.getString("sex");
            String agess = jsonObjects.getString("age");
            String namess = jsonObjects.getString("name");
            Log.d("TAG", "sexss----:" + sexss);
            Log.d("TAG", "agess----:" + agess);
            Log.d("TAG", "namess----:" + namess);
        }
        String school = jsonObject.getString("school");
        Log.d("TAG", "school----:" + school);
        boolean error = jsonObject.getBoolean("error");
        Log.d("TAG", "error----:" + error);
    }


}

 

 

结果

D/TAG: sexss----:男
D/TAG: agess----:20
D/TAG: namess----:张三

D/TAG: sexss----:女
D/TAG: agess----:22
D/TAG: namess----:小华

D/TAG: sexss----:男
D/TAG: agess----:25
D/TAG: namess----:李四

D/TAG: sexss----:女
D/TAG: agess----:27
D/TAG: namess----:小丽

D/TAG: school----:清华大学

D/TAG: error----:false

 

由上可知使用FastJson时,无论解析Object类型还是Array类型的数据。都使用了JSON类。

 

JSON类

 

即所有操作都用JSON类,然后调用JSON类的相关静态方法。

 

解析Json数据常用

public static JSONObject parseObject(String text)
public static JSONArray parseArray(String text)

 

图解

即com.alibaba.fastjson.JSONObject有各种get方法,而不是只有getString();

 

 

 

 

 

 

四.具体使用之  Object转换成Json字符串

 

1.Java Bean转换成Json字符串

 

方法使用 

public static String toJSONString(Object object)

 

 

代码

package com.example.myapplication;

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

import androidx.appcompat.app.AppCompatActivity;

import com.alibaba.fastjson.JSON;

public class MainActivity extends AppCompatActivity {

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

    private void testMethod() {
        Student student = new Student();
        student.setAge("20");
        student.setName("张三");
        student.setSex("男");
        String beanJson = JSON.toJSONString(student);
        Log.d("TAG", "beanJson----:" + beanJson);
    }
    
}

 

 

结果

D/TAG: beanJson----:{"age":"20","name":"张三","sex":"男"}

 

 

 

 

2.Map转换成Json字符串

 

方法使用

public static String toJSONString(Object object)

 

 

代码

package com.example.myapplication;

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

import androidx.appcompat.app.AppCompatActivity;

import com.alibaba.fastjson.JSON;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

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

    private void testMethod() {
        Map<String, String> map = new HashMap<String, String>();
        map.put("age", "25");
        map.put("name", "张三");
        map.put("sex", "男");
        String mapJson = JSON.toJSONString(map);
        Log.d("TAG", "mapJson----:" + mapJson);
    }

}

 

结果

D/TAG: mapJson----:{"sex":"男","name":"张三","age":"25"}

 

 

 

 

3.List转换成Json字符串

 

方法使用

public static String toJSONString(Object object)

 

 

代码

package com.example.myapplication;

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

import androidx.appcompat.app.AppCompatActivity;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

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

    private void testMethod() {
        Student student1 = new Student();
        student1.setAge("20");
        student1.setName("张三");
        student1.setSex("男");

        Student student2 = new Student();
        student2.setAge("22");
        student2.setName("小华");
        student2.setSex("女");

        List<Student> list = new ArrayList<Student>();
        list.add(student1);
        list.add(student2);

        String listJson = JSON.toJSONString(list);
        Log.d("TAG", "listJson----:" + listJson);
    }

}

 

 

结果

D/TAG: listJson----:[{"age":"20","name":"张三","sex":"男"},{"age":"22","name":"小华","sex":"女"}]

 

 

 

 

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 Android 应用程序中使用 fastjson解析本地 JSON 文件为 Java Bean,可以按照以下步骤进行: 1. 引入 fastjson 库 在你的项目中添加 fastjson 库的依赖。可以通过 Gradle、Maven 或手动导入 JAR 包的方式进行添加。 2. 创建 Java Bean 创建一个 Java Bean,用于存储 JSON 文件中的数据。 ```java public class ExampleBean { private String name; private int age; private List<String> hobbies; // getter 和 setter 方法 } ``` 3. 解析 JSON 文件 使用 fastjson 库将本地 JSON 文件解析成 Java Bean。以下是一个简单的示例代码,假设你的 JSON 文件名为 "example.json": ```java try { InputStream is = getAssets().open("example.json"); // 打开文件输入流 int size = is.available(); // 获取文件大小 byte[] buffer = new byte[size]; // 创建一个缓冲区 is.read(buffer); // 将文件内容读入缓冲区 is.close(); // 关闭文件输入流 String json = new String(buffer, "UTF-8"); // 将缓冲区内的字节转换为字符串 ExampleBean bean = JSON.parseObject(json, ExampleBean.class); // 解析 JSON 字符串为 Java Bean // 使用解析出来的 Java Bean 进行相关操作 String name = bean.getName(); int age = bean.getAge(); List<String> hobbies = bean.getHobbies(); // ... } catch (IOException e) { e.printStackTrace(); } ``` 在上述代码中,我们首先打开文件输入流,然后将文件内容读入缓冲区,接着将缓冲区内的字节转换为字符串,最后使用 fastjson 库将 JSON 字符串解析成 Java Bean。需要注意的是,此处我们将文件内容读入缓冲区时使用了 UTF-8 编码,因此在创建 String 对象时也需要指定相应的编码方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值