android依赖 implementation 'com.alibaba:fastjson:1.2.68'
常见用法:
void test(){
//创建JSON对象,JSONObject和JSONArray都继承了JSON
//创建JSONObject
JSONObject createJsonObject = new JSONObject();
createJsonObject.put("int",123);
createJsonObject.put("string","abc");
Log.d("createJsonObject", createJsonObject.toString());
//createJsonObject: {"integer":123,"string":"abc"}
//创建JSONArray
JSONArray createJsonArray = new JSONArray();
createJsonArray.add(createJsonObject);
createJsonObject = new JSONObject();
createJsonObject.put("boolean",true);
createJsonArray.add(createJsonObject);
Log.d("createJsonArray", createJsonArray.toString());
//createJsonArray: [{"int":123,"string":"abc"},{"boolean":true}]
//java对象解析
Person person = new Person("jack", new Date(), 25);
//对象转json字符串
String jsonStr = JSON.toJSONString(person);
Log.d("jsonStr", jsonStr);
//jsonStr: {"age":25,"birth day":"2022-03-03"}
//json字符串转对象
Person parsePerson = JSON.parseObject(jsonStr,Person.class);
Log.d("parsePerson", parsePerson.toString());
//parsePerson: Person{fullName='null', birthDay=Thu Mar 03 00:00:00 GMT+08:00 2022, age=25}
List<Person> list = new ArrayList<>();
Person person2 = new Person("andy", new Date(), 20);
list.add(person);
list.add(person2);
//BeanToArray序列化功能
String beanToArrayStr = JSON.toJSONString(list, SerializerFeature.BeanToArray);
Log.d("beanToArrayStr", beanToArrayStr);
//beanToArrayStr: [[25,"2022-03-03"],[20,"2022-03-03"]]
//数组转json字符串
String listStr = JSON.toJSONString(list);
/Log.d("listStr", listStr);
//listStr: [{"age":25,"birth day":"2022-03-03"},{"age":20,"birth day":"2022-03-03"}]
//json字符串转对象数组
List<Person> parseList = JSON.parseArray(listStr,Person.class);
Log.d("parseList", parseList.toString());
/*parseList:
[
Person{fullName='null', birthDay=Thu Mar 03 00:00:00 GMT+08:00 2022, age=25},
Person{fullName='null', birthDay=Thu Mar 03 00:00:00 GMT+08:00 2022, age=20}
]
*/
//过滤value
ContextValueFilter valueFilter = new ContextValueFilter () {
public Object process(
BeanContext context, Object object, String name, Object value) {
if (name.equals("birth day")) {
return "hide";
}
if (value instanceof Integer ) {
return ((int) value)*2;
}
return null;
}
};
String valueFilterStr = JSON.toJSONString(list, valueFilter);
Log.d("valueFilterStr", valueFilterStr);
//valueFilterStr: [{"age":50,"birth day":"hide"},{"age":40,"birth day":"hide"}]
//过滤name
NameFilter nameFilter = new NameFilter() {
public String process(Object object, String name, Object value) {
return name.toLowerCase().replace(" ", "_");
}
};
SerializeConfig.getGlobalInstance().addFilter(Person.class, nameFilter);
String nameFilterStr = JSON.toJSONString(person);
Log.d("nameFilterStr", nameFilterStr);
//nameFilterStr: {"age":25,"birth_day":1646271951596}
//日期格式,不使用注解
String formatStr = JSON.toJSONStringWithDateFormat(list, "yyyy_MM_dd");
Log.d("formatStr", formatStr);
//formatStr: [{"age":25,"birth_day":"2022_03_03"},{"age":20,"birth_day":"2022_03_03"}]
//enum转json字符串
SerializeConfig.getGlobalInstance().configEnumAsJavaBean(MEnum.class);
String enumStr = JSON.toJSONString(MEnum.values(), SerializeConfig.getGlobalInstance());
Log.d("enumStr", enumStr);
//enumStr: [{"age":15,"sex":"男"},{"age":16,"sex":"女"}]
//json字符串转解析enumStr
JSONArray jsonArray = JSON.parseArray(enumStr);
for(int i=0;i<jsonArray.size();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
int age = jsonObject.getInteger("age");
String sex = jsonObject.getString("sex");
Log.d("parseEnum "+i, " sex:"+sex+" age:"+age);
//parseEnum 0: sex:男 age:15
//parseEnum 1: sex:女 age:16
}
}
static class Person{
//注解 name:字段名称, ordinal:字段顺序,deserialize:反序列化,serialize:序列化,format:日期格式
@JSONField(serialize = false,deserialize = false)
String fullName;
@JSONField(name="birth day",ordinal = 2,format = "yyyy-MM-dd")
Date birthDay;
@JSONField(ordinal = 1)
int age;
public Person() {
}
public Person(String fullName, Date birthDay, int age) {
this.fullName = fullName;
this.birthDay = birthDay;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"fullName='" + fullName + '\'' +
", birthDay=" + birthDay +
", age=" + age +
'}';
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
enum MEnum{
man("男",15),
woman("女",16);
String sex;
int age;
MEnum(String sex, int age) {
this.sex = sex;
this.age = age;
}
@Override
public String toString() {
return "MEnum{" +
"sex='" + sex + '\'' +
", age=" + age +
'}';
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}