阿里巴巴之fastjson的简单总结

        今日,公司由于要求写一个SDK打成jar包,便于以后直接调用,因为接口参数要求是json格式的,所以做完之后在这里就总结一下,和各位道友分享。

        首先,我这里使用的json工具是阿里巴巴的fastjson,maven依赖在这里:

 <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>


        其实,平时json的使用也就两种,1数据转json;    2.json解析成数据。

        由于说明都在代码中,所以各位道友只管尽情的享受阅读代码的快感即可。


        第一:数据转json:

package com.google.fastJson;

import com.alibaba.fastjson.JSON;

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

/**
 * 将数据转换为json数据,使用"JSON.toJSONString(Object obj)"方法;
 */
public class Demo01 {

    public static void main(String[] args){

        /**
         * 注意比较下面两种json数据格式:一种是"{}"形式,另一种是"[{},{}]"的
         * 我们可以这样理解:json的标准数据格式是"{key:value}"的形式.
         * key,value为json的基础元素,{}将基础元素封装成一个对象,[{},{},...]是将这些对象封装成一个数组;
         */
        String json01=test01();
        System.out.println(json01);//{"name":"zhangsan","age":14}

        String json02=test02();
        System.out.println(json02);//[{"name":"zhangsan","age":11},{"address":"新疆","tel":"13056897412"}]
    }


    public static String test01(){
        Map<String,Object> map=new HashMap<>();
        map.put("name","zhangsan");
        map.put("age",14);
        String jsonStr=JSON.toJSONString(map);
        return jsonStr;
    }


    public static String test02(){

        Object[] obj=new Object[2];

        Map<String,Object> map1=new HashMap<>();
        map1.put("name","zhangsan");
        map1.put("age",11);

        Map<String,Object> map2=new HashMap<>();
        map2.put("address","新疆");
        map2.put("tel","13056897412");

        obj[0]=map1;
        obj[1]=map2;

        String jsonStr=JSON.toJSONString(obj);

        return jsonStr;
    }
}

       第二:解析json数据:

package com.google.fastJson;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * 之前讲了将数据转换为json格式,这里讲如何从json数据中获取数据,即为逆过程。分三种情况:
 */

public class Demo02 {

    public static void main(String[] args){

        test01(); //结果:年龄=zhangsan,年龄=12

        test02(); //姓名=zhangsan,年龄=11,爱好=null   姓名=null,年龄=null,爱好=soccer



        //name=zhaoyun
        //age=666
        //schoolName=家里蹲
        //schoolCode=110
        //mathTecherName=刘备
        //mathTeacherAge=54
        //englishTeacherName=关羽
        //mathTeacherAge=110
        test03();

    }

    /**
     * 第一种情况:简单对象类型:如"{"name":"zhangsan","age":12}"
     */
    public static void test01(){

        //定义一个json字符串:
        String jsonStr="{\"name\":\"zhangsan\",\"age\":12}"; //这里的\"表示转义字符;

        //使用JSON.parseObject(String str)将字符串解析为json对象:
        JSONObject jo=JSON.parseObject(jsonStr);
        String name=jo.getString("name");
        int age=jo.getInteger("age");
        System.out.println("年龄="+name+",年龄="+age);

    }


    /**
     * 第二种情况:数组类型:如:
     *  [{"name":"zhangsan","age":11},{"like":"soccer"}]
     */
    public static void test02(){

        //定义一个json字符串:
        String jsonStr="[{\"name\":\"zhangsan\",\"age\":11},{\"like\":\"soccer\"}]";

        //使用JSON.parseArray(String str)解析数组类型的json数据:
        JSONArray ja=JSON.parseArray(jsonStr); //返回的实际上是一个list容器

        //遍历这个容器
        for(int i=0;i<ja.size();i++){
            JSONObject jo=ja.getJSONObject(i);
            System.out.println("姓名="+jo.getString("name")+",年龄="+jo.getInteger("age")+",爱好="+jo.getString("like"));
        }

        //或者使用foreach遍历也可以:
        for(Object obj:ja){
            JSONObject jo=(JSONObject)obj;
            System.out.println("姓名="+jo.getString("name")+",年龄="+jo.getInteger("age")+",爱好="+jo.getString("like"));
        }
    }

    /**
     * 第三种情况:比较复杂的json数据格式:例如:
     * {
     *    "name":"zhaoyun",
     *    "age":666,
     *    "school":{
     *              "schoolName":"家里蹲",
     *              "schoolCode":110
     *             },
     *    "teacher":[
     *                {
     *                 "mathTecherName":"刘备",
     *                 "mathTeacherAge":54
     *                },
     *                {
     *                 "englishTeacherName":"关羽",
     *                 "englishTeacherAge":110
     *                }
     *            ]
     * }
     *
     */
    public static void test03(){
        String jsonStr="{\"name\":\"zhaoyun\",\"age\":666,\"school\":{\"schoolName\":\"家里蹲\",\"schoolCode\":\"110\"},\"teacher\":[{\"mathTecherName\":\"刘备\",\"mathTeacherAge\":54},{\"englishTeacherName\":\"关羽\",\"englishTeacherAge\":110}]}";
        JSONObject jo=JSON.parseObject(jsonStr);

        String name=jo.getString("name");
        int age=jo.getInteger("age");
        System.out.println("name="+name);
        System.out.println("age="+age);

        //这一步注意了:
        JSONObject jo2=jo.getJSONObject("school");
        String schoolName=jo2.getString("schoolName");
        int schoolCode=jo2.getInteger("schoolCode");
        System.out.println("schoolName="+schoolName);
        System.out.println("schoolCode="+schoolCode);

        //这一步更要注意了:
        JSONArray ja=jo.getJSONArray("teacher");
        for(int i=0;i<ja.size();i++){
            JSONObject jo3=ja.getJSONObject(i);
            if(i==0){
                String mathTecherName=jo3.getString("mathTecherName");
                int mathTeacherAge=jo3.getInteger("mathTeacherAge");
                System.out.println("mathTecherName="+mathTecherName);
                System.out.println("mathTeacherAge="+mathTeacherAge);
            }
            if(i==1){
                String englishTeacherName=jo3.getString("englishTeacherName");
                int englishTeacherAge=jo3.getInteger("englishTeacherAge");
                System.out.println("englishTeacherName="+englishTeacherName);
                System.out.println("mathTeacherAge="+englishTeacherAge);
            }
        }

    }
}





猜你喜欢

转载自blog.csdn.net/boy_chen93/article/details/80367055