FastJson学习笔记

前端之家收集整理的这篇文章主要介绍了FastJson学习笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.测试实体类

/** * * @Description@H_301_6@: 测试 * @date@H_301_6@ 2017年7月12日 下午6:04:09 * @version@H_301_6@ V1.0 */@H_301_6@
public@H_301_6@ class@H_301_6@ Person@H_301_6@ {@H_301_6@
    /** * 姓名 */@H_301_6@
    private@H_301_6@ String name;
    /** * 年龄 */@H_301_6@
    private@H_301_6@ Integer age;
    /** * 地址 */@H_301_6@
    private@H_301_6@ String address;
    /** * 电话 */@H_301_6@
    private@H_301_6@ String tellphone;


    public@H_301_6@ Person@H_301_6@(){}
    /** * @param@H_301_6@ name * @param@H_301_6@ age */@H_301_6@
    public@H_301_6@ Person@H_301_6@(String name,Integer age) {
        super@H_301_6@();
        this@H_301_6@.name = name;
        this@H_301_6@.age = age;
    }
    public@H_301_6@ Person@H_301_6@(String name,Integer age,String address,String tellphone) {
        this@H_301_6@.name = name;
        this@H_301_6@.age = age;
        this@H_301_6@.address = address;
        this@H_301_6@.tellphone = tellphone;
    }

    /** * @return@H_301_6@ the name */@H_301_6@
    public@H_301_6@ String getName@H_301_6@() {
        return@H_301_6@ name;
    }

    /** * @param@H_301_6@ name * the name to set */@H_301_6@
    public@H_301_6@ void@H_301_6@ setName@H_301_6@(String name) {
        this@H_301_6@.name = name;
    }

    /** * @return@H_301_6@ the age */@H_301_6@
    public@H_301_6@ Integer getAge@H_301_6@() {
        return@H_301_6@ age;
    }

    /** * @param@H_301_6@ age * the age to set */@H_301_6@
    public@H_301_6@ void@H_301_6@ setAge@H_301_6@(Integer age) {
        this@H_301_6@.age = age;
    }

    public@H_301_6@ String getAddress@H_301_6@() {
        return@H_301_6@ address;
    }

    public@H_301_6@ void@H_301_6@ setAddress@H_301_6@(String address) {
        this@H_301_6@.address = address;
    }

    public@H_301_6@ String getTellphone@H_301_6@() {
        return@H_301_6@ tellphone;
    }

    public@H_301_6@ void@H_301_6@ setTellphone@H_301_6@(String tellphone) {
        this@H_301_6@.tellphone = tellphone;
    }

    @Override@H_301_6@
    public@H_301_6@ String toString@H_301_6@() {
        return@H_301_6@ "Person [name="@H_301_6@ + name + ",age="@H_301_6@ + age + "]"@H_301_6@;
    }
}

2.FastJson常用API

/** * com.alibaba.fastjson.JSON; * This is the main class for using Fastjson * You usually call these two methods toJSONString(Object) and parSEObject(String,Class). */@H_301_6@
public@H_301_6@ class@H_301_6@ FastJsonTest@H_301_6@ {@H_301_6@


    /** * deserializes json into model */@H_301_6@
    public@H_301_6@ void@H_301_6@ jsonToModel@H_301_6@(){
        StringBuilder jsonBuilder = new@H_301_6@ StringBuilder(128@H_301_6@);
        jsonBuilder.append("{\"name\":\"xiaoming\",\"age\":\"25\"}"@H_301_6@);
        Person person = JSON.parSEObject(jsonBuilder.toString(),Person.class);
        System.out.println(person);
        // Person [name=xiaoming,age=25]@H_301_6@
    }

    /** * the object that your are serializing/deserializing is a ParameterizedType * then you must use the parSEObject(String,Type,Feature[]) method */@H_301_6@
    public@H_301_6@ void@H_301_6@ jsonToList@H_301_6@(){
        StringBuilder jsonBuilder = new@H_301_6@ StringBuilder(128@H_301_6@);
        jsonBuilder.append("["@H_301_6@);
        jsonBuilder.append("{\"name\":\"Tom\",\"age\":\"23\"},"@H_301_6@);
        jsonBuilder.append("{\"name\":\"Cat\",\"age\":\"21\"}"@H_301_6@);
        jsonBuilder.append("]"@H_301_6@);
        Type type = new@H_301_6@ TypeReference<List<Person>>() {}.getType();
        // This method deserializes the specified Json into an object of the specified type.@H_301_6@
        // This method is useful if the specified object is a generic type(泛型)@H_301_6@
        // For non-generic objects,use parSEObject(String,Class,Feature[]) instead@H_301_6@
        List<Person> list = JSON.parSEObject(jsonBuilder.toString(),type);
        for@H_301_6@(Person p : list){
            System.out.println(p);
        }
      // Person [name=Tom,age=23]@H_301_6@
       // Person [name=Cat,age=21]@H_301_6@
    }

    public@H_301_6@ void@H_301_6@ jsonToMap@H_301_6@(){
        StringBuilder jsonBuilder = new@H_301_6@ StringBuilder(128@H_301_6@);
        jsonBuilder.append("{\"name\":\"xiaoming\",\"age\":\"25\"}"@H_301_6@);
        Type type = new@H_301_6@ TypeReference<Map<String,Object>>() {}.getType();
        Map  map = JSON.parSEObject(jsonBuilder.toString(),type);
        System.out.println(map);
        //{name=xiaoming,age=25}@H_301_6@
    }

    /** * serializes model to Json */@H_301_6@
    public@H_301_6@ void@H_301_6@  modelToJson@H_301_6@(){
        String json = JSON.toJSONString(new@H_301_6@ Person("tocmat"@H_301_6@,22@H_301_6@));
        System.out.println(json);
        // {"age":22,"name":"tocmat"}@H_301_6@
         //格式化@H_301_6@
        System.out.println(JSON.toJSONString(new@H_301_6@ Person("测试"@H_301_6@,25@H_301_6@),true@H_301_6@));
        /** * { "age":25,"name":"测试" } */@H_301_6@
    }

    /** * 集合转json字符串 */@H_301_6@
    public@H_301_6@ void@H_301_6@ listToJson@H_301_6@(){
        Person one = new@H_301_6@ Person("Tom"@H_301_6@,21@H_301_6@);
        Person two = new@H_301_6@ Person("Cat"@H_301_6@,25@H_301_6@);
        List<Person> list = new@H_301_6@ ArrayList<>();
        list.add(one);
        list.add(two);
        String json = JSON.toJSONString(list,true@H_301_6@);
        System.out.println(json);
        /** [ { "age":21,"name":"Tom" },{ "age":25,"name":"Cat" } ] */@H_301_6@
    }

    /** * 自定义反序列化 */@H_301_6@
   public@H_301_6@ void@H_301_6@ customerJsonToObject@H_301_6@(){
     // Feature.AllowSingleQuotes 允许单引号 默认已使用@H_301_6@
       // Feature.AllowUnQuotedFieldNames 允许没有引号的key 默认已使用@H_301_6@
       // ....@H_301_6@
       StringBuilder jsonBuilder = new@H_301_6@ StringBuilder(128@H_301_6@);
       jsonBuilder.append("{\"name\":\'xiaoming\',age:\"25\"}"@H_301_6@);
       Person person = JSON.parSEObject(jsonBuilder.toString(),Person.class,Feature.AllowSingleQuotes);
       System.out.println(person);
       //Person [name=xiaoming,age=25]@H_301_6@
   }

    /** * 自定义序列化 */@H_301_6@
   public@H_301_6@ void@H_301_6@ customerObjectToJson@H_301_6@(){
       // SerializerFeature.QuoteFieldNames 用引号包裹key 默认已使用@H_301_6@
       // SerializerFeature.SortField 排序输出字段 默认已使用@H_301_6@
      // SerializerFeature.PrettyFormat 格式化@H_301_6@
      // SerializerFeature.UseSingleQuotes key和字符串值 使用单引号@H_301_6@
       // .....@H_301_6@

       String json = JSON.toJSONString(new@H_301_6@ Person("tomcat"@H_301_6@,22@H_301_6@),SerializerFeature.PrettyFormat,SerializerFeature.UseSingleQuotes);
       System.out.println(json);
       /** { 'age':22,'name':'tomcat' } */@H_301_6@
       //忽略的字段和包含字段@H_301_6@
       SimplePropertyPreFilter filter = new@H_301_6@ SimplePropertyPreFilter();
       filter.getExcludes().add("name"@H_301_6@); //忽略name字段@H_301_6@
       filter.getExcludes().add("age"@H_301_6@); // 忽略age字段@H_301_6@
       Person person = new@H_301_6@ Person("张三"@H_301_6@,25@H_301_6@,"某某地址"@H_301_6@,"1534587787"@H_301_6@);
       String personjson = JSON.toJSONString(person,filter);
       System.out.println(personjson);
       // {"address":"某某地址","tellphone":"1534587787"}@H_301_6@

       filter = new@H_301_6@ SimplePropertyPreFilter();
       filter.getIncludes().add("address"@H_301_6@); //包含address字段@H_301_6@
       filter.getIncludes().add("age"@H_301_6@);  //包含age字段@H_301_6@
       System.out.println(JSON.toJSONString(person,filter));
       // {"address":"某某地址","age":25}@H_301_6@
   }



    public@H_301_6@ static@H_301_6@ void@H_301_6@ main@H_301_6@(String[] args){
        FastJsonTest  test = new@H_301_6@ FastJsonTest();
        test.customerObjectToJson();

    }



}
原文链接:https://www.f2er.com/json/288839.html

猜你在找的Json相关文章