一.简介
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":"女"}]