Fastjson

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;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值