欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Fastjson使用

程序员文章站 2022-06-17 09:10:55
...

1.介绍

阿里官方给的定义是, fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。

1.1 常用方法


Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。  
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray   
public static final JSONObject parseObject(String text)// 把JSON文本parse成JSONObject      
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean   
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray   
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合   
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本   
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本   
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样的) 

1. 将对象序列化成json字符串

String com.alibaba.fastjson.JSON.toJSONString(Object object)

2. 将json字符串反序列化成对象

<T> Project com.alibaba.fastjson.JSON.parseObject(String text, Class<T> clazz)

3. 将json字符串反序列化成JSON对象

JSONObject com.alibaba.fastjson.JSON.parseObject(String text)

4.根据key 得到json中的json数组

JSONArray com.alibaba.fastjson.JSONObject.getJSONArray(String key)

5. 根据下标拿到json数组的json对象

JSONObject com.alibaba.fastjson.JSONArray.getJSONObject(int index)

6.. 根据key拿到json的字符串值

String com.alibaba.fastjson.JSONObject.getString(String key)

7. 根据key拿到json的intint com.alibaba.fastjson.JSONObject.getIntValue(String key)

8. 根据key拿到json的booleanboolean com.alibaba.fastjson.JSONObject.getBooleanValue(String key)

2.配置

pom.xml里引入依赖即可

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

3.使用

3.1 read

1.增加一个json数据

{
  "data": {
    "city": "深圳",
    "temphigh": "25",
    "templow": "19",
    "updatetime": "2017-11-04 13:23:00",
    "tempnow": "24",
    "sendibletemp": "27",
    "winddirect": "东北风",
    "windpower": "2级",
    "humidity": "42",
    "sunrise": "06:29",
    "sunset": "17:45",
    "weather": "多云",
    "week": "星期六",
    "nl": null,
    "date": "2017-11-04",
    "index": [
      {
        "name": "化妆指数",
        "level": "控油",
        "msg": "建议用露质面霜打底,水质无油粉底霜,透明粉饼,粉质胭脂。"
      },
      {
        "name": "感冒指数",
        "level": "易发",
        "msg": "感冒容易发生,少去人群密集的场所有利于降低感冒的几率。"
      },
      {
        "name": "洗车指数",
        "level": "不宜",
        "msg": "雨(雪)水和泥水会弄脏您的爱车,不适宜清洗车辆。"
      }
    ],
    "pm25": {
      "aqi": 0,
      "co": 8,
      "o3": 42,
      "pm10": 63,
      "pm2_5": 64,
      "quality": "良",
      "so2": 4,
      "no2": 11,
      "updatetime": "2017-11-04 13:00:00"
    },
    "daily": [
      {
        "date": "2017-11-04",
        "week": "星期六",
        "sunrise": "06:29",
        "sunset": "17:45",
        "temphigh": "25",
        "templow": "19",
        "weather": "多云"
      },
      {
        "date": "2017-11-05",
        "week": "星期日",
        "sunrise": "06:29",
        "sunset": "17:45",
        "temphigh": "26",
        "templow": "19",
        "weather": "多云"
      }
    ]
  },
  "status": 0,
  "msg": "ok"
}

2.代码

    public void readJson(){

        String testStr = "{\"data\":{\"city\":\"深圳\",\"temphigh\":\"25\",\"templow\":\"19\",\"updatetime\":\"2017-11-04 13:23:00\",\"tempnow\":\"24\",\"sendibletemp\":\"27\",\"winddirect\":\"东北风\",\"windpower\":\"2级\",\"humidity\":\"42\",\"sunrise\":\"06:29\",\"sunset\":\"17:45\",\"weather\":\"多云\",\"week\":\"星期六\",\"nl\":null,\"date\":\"2017-11-04\",\"index\":[{\"name\":\"化妆指数\",\"level\":\"控油\",\"msg\":\"建议用露质面霜打底,水质无油粉底霜,透明粉饼,粉质胭脂。\"},{\"name\":\"感冒指数\",\"level\":\"易发\",\"msg\":\"感冒容易发生,少去人群密集的场所有利于降低感冒的几率。\"},{\"name\":\"洗车指数\",\"level\":\"不宜\",\"msg\":\"雨(雪)水和泥水会弄脏您的爱车,不适宜清洗车辆。\"}],\"pm25\":{\"aqi\":0,\"co\":8,\"o3\":42,\"pm10\":63,\"pm2_5\":64,\"quality\":\"良\",\"so2\":4,\"no2\":11,\"updatetime\":\"2017-11-04 13:00:00\"},\"daily\":[{\"date\":\"2017-11-04\",\"week\":\"星期六\",\"sunrise\":\"06:29\",\"sunset\":\"17:45\",\"temphigh\":\"25\",\"templow\":\"19\",\"weather\":\"多云\"},{\"date\":\"2017-11-05\",\"week\":\"星期日\",\"sunrise\":\"06:29\",\"sunset\":\"17:45\",\"temphigh\":\"26\",\"templow\":\"19\",\"weather\":\"多云\"}]},\"status\":0,\"msg\":\"ok\"}";

        //最外层{} == testJson,testJson里有三个子元素data,msg,status
        JSONObject testJson = JSONObject.parseObject(testStr);

        //{data:{}} --> 里面的{}又是一个JSONObject对象
        JSONObject data = testJson.getJSONObject("data");

        //{temphigh:值},类似这种形式的,就可以直接根据方法getXXX获取里面的值了
        //同时,这种形式,只要有多少个,就表示JSONObject里有多少个子元素
        String temphigh = data.getString("temphigh");
        Date updatetime = data.getDate("updatetime");

        //{index:[]} --> 里面的[]就是一个JSONArray对象
        JSONArray indexArr = data.getJSONArray("index");
        for (int i = 0; i < indexArr.size(); i++) {
            //[{},{},{}] --> 可用通过getJSONObject来获取一个JSONObject,然后再根据JSONObject的方法来获取里面的值
            JSONObject jsonObject = indexArr.getJSONObject(i);
            String name = jsonObject.getString("name");
            String msg = jsonObject.getString("msg");
            System.out.println(name + "--" +msg);
        }
    }

Fastjson使用
Fastjson使用

3.2 write

4.参考

Json详解以及fastjson使用教程
阿里巴巴的开源库 - Fastjson
fastjson使用介绍
com.alibaba的fastjson简介
alibaba的FastJson(高性能JSON开发包)
Fastjson 简明教程
Fastjson API中文版

相关标签: Fastjson