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的int值
int com.alibaba.fastjson.JSONObject.getIntValue(String key)
8. 根据key拿到json的boolean值
boolean 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);
}
}
3.2 write
4.参考
Json详解以及fastjson使用教程
阿里巴巴的开源库 - Fastjson
fastjson使用介绍
com.alibaba的fastjson简介
alibaba的FastJson(高性能JSON开发包)
Fastjson 简明教程
Fastjson API中文版
上一篇: flink windows窗口 应用范例
下一篇: 异常(Exception)