fastjson 是阿里公司出品的json软件

直接在pom。xml文件加入依赖

  • fastjson中JSONObject类似于一个Map
  • fastjson中JSONArray类似于一个List

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>1.2.18</version>

</dependency>

package Java.Learn;

import java.util.List;
import java.util.Map;

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

public class TestJasn 
{
    public void testJson(){
        String json = "{\"a\":[\"a1\",\"a2\",\"a1\"],"
                + "     \"cb\":{\"a\":1},"
                + "     \"d\":[\"a\",{\"a\":[1,20]},{\"a\":2},\"\"],"
                + "     \"e\":\"b\"}";
        System.out.println("--"+json);
        JSONObject j = JSON.parseObject(json);//解析成一个JSONObject
        JSONArray a = j.getJSONArray("a");//将a的value解析成一个JSONArray
        System.out.println(a);//输出["a1","a2","a1"]
        JSONObject cb = j.getJSONObject("cb");//解析成一个JSONObject
        Integer cba = cb.getInteger("a");//获取cb下a的值
        System.out.println(cba);//输出1
    }
    public void testJsonObject(){
        String json = "{\"retCode\":200,\"retMsg\":\"success.\"}";
        RetInfo info = JSON.parseObject(json, RetInfo.class);//解析成一个RetInfo对象
        System.out.println(info.getRetMsg());//输出success.
        String json1 = "[{\"retCode\":200,\"retMsg\":\"success.\"},{\"retCode\":201,\"retMsg\":\"fail.\"}]";
        List<RetInfo> infos = JSON.parseArray(json1, RetInfo.class);//解析成一个List<RetInfo>对象
        System.out.println(infos.get(1).getRetCode());//输出201
        /**
         * 如果不想写类似于RetInfo这种对象文件(也称为pojo),那就可以用TypeReference来解决
         * 这种方式在测试中用的普遍一些
         */
        List<Map<String, Object>> infos1 = JSON.parseObject(json1, new TypeReference<List<Map<String, Object>>>(){});
        System.out.println(infos1.get(1).get("retMsg"));//输出fail.
        String json2 = "{\"retCode\":200,\"retMsg\":\"success.\",\"data\":{\"name\":\"zhangsan\",\"age\":18}}";
        JSONObject data = JSON.parseObject(json2).getJSONObject("data");//获取data对象的JSONObject
        /**
         * 将data对象先转成一个json字符串后,再解析成一个map形式的数据结构
         * 这种方式在测试中也用的比较普遍
         */
        Map<String, Object> dataInfo = JSON.parseObject(data.toJSONString(), new TypeReference<Map<String, Object>>(){});
        System.out.println(dataInfo.get("name"));//输出zhangsan
    }
    public static class RetInfo{
        private int retCode;
        private String retMsg;
        public int getRetCode() {
            return retCode;
        }
        public void setRetCode(int retCode) {
            this.retCode = retCode;
        }
        public String getRetMsg() {
            return retMsg;
        }
        public void setRetMsg(String retMsg) {
            this.retMsg = retMsg;
        }

    }

    public static void main(String[] args) {
        TestJasn t = new TestJasn();
        t.testJson();
        t.testJsonObject();
    }
}

 

posted on 2016-10-19 09:52  jurryfu  阅读(99)  评论(0)    收藏  举报