fastjson常用的方法总结
最近在写接口和转发器的时候代码里面遇到了很多报文格式转化的地方,就将fastjson的常用的方法总结一下。
JSONString转JSONObject:JSON字符串是普通的字符串,只是格式上符合JSON的格式,将JSONString转为JSONObject之后,可以通过jsonObject.getString(key)取到JSON对象的属性值,JSON串里面也可以嵌套JSON串,比如我的stuinfo为一个JSON串,同时里面的cname也是一个JSON串。
package JsonTest;
import com.alibaba.fastjson.JSONObject;
public class JSonStr2JSonObj {
//将名为stuinfo的json串转化成JSonObject
String stuinfo = "{\"id\":\"001\",\"name\":\"张三\",\"cname\":{\"school\":\"清华大学\",\"academy\":\"计算机学院\",\"major\":\"计算机科学与技术\",\"classid\":\"一班\"},\"gender\":\"男\"}";
JSONObject jsonObject = JSONObject.parseObject(stuinfo);
//通过key取出来的也为一个Json串;cname = {"classid":"一班","major":"计算机科学与技术","school":"清华大学","academy":"计算机学院"}
String cname = jsonObject.getString("cname");
//将名为cname的JsonString转化成JsonObjcet
JSONObject jsonObject1 = JSONObject.parseObject(cname);
String school = jsonObject1.getString("school");
public static void main(String args[]) {
JSonStr2JSonObj string2Json = new JSonStr2JSonObj();
System.out.println(string2Json.stuinfo);
System.out.println(string2Json.cname);
System.out.println(string2Json.school);
}
}
JSONString转JSONArray:将JSONString转换成JSONArray之后,可以通过下标取值。比如我的stuinfo里面的cname就是一个数组,但是数字里面存的是JSON对象。
package JsonTest;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class JSonStr2JSonArr {
String stuinfo = "{\"id\":\"001\",\"name\":\"张三\",\"cname\":[{\"school\":\"清华大学\"},{\"academy\":\"计算机学院\"},{\"major\":\"计算机科学与技术\"},{\"classid\":\"一班\"}],\"gender\":\"男\"}";
JSONObject jsonObject = JSONObject.parseObject(stuinfo);
String cname = jsonObject.getString("cname");
JSONArray jsonArray = JSONArray.parseArray(cname);
String school = jsonArray.getString(1);
public static void main(String args[]) {
JSonStr2JSonArr jSonStr2JSonArr = new JSonStr2JSonArr();
System.out.println(jSonStr2JSonArr.cname);
System.out.println(jSonStr2JSonArr.school);
}
}
JSONString转Map的几种方式
package JsonTest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
public class JSont2Map {
//将名为stuinfo的json串转化成JSONObject
String stuinfo = "{\"id\":\"001\",\"name\":\"张三\",\"cname\":{\"school\":\"清华大学\",\"academy\":\"计算机学院\",\"major\":\"计算机科学与技术\",\"classid\":\"一班\"},\"gender\":\"男\"}";
JSONObject jsonObject = JSONObject.parseObject(stuinfo);
//通过key取出来的也为一个JSON串;cname = {"classid":"一班","major":"计算机科学与技术","school":"清华大学","academy":"计算机学院"}
String cname = jsonObject.getString("cname");
public static void main(String args[]) {
JSont2Map jSont2Map = new JSont2Map();
System.out.println(jSont2Map.cname);
//第一种方法,用JSON类的parse来解析JSON字符串
Map<String, String> myMaps = (Map<String, String>) JSON.parse(jSont2Map.cname);
for (Object map : myMaps.entrySet()) {
System.out.println(((Map.Entry) map).getKey() + " " + ((Map.Entry) map).getValue());
}
//第二种方法,用JSON类的parseObject来解析字符串
Map myMaps1 = JSON.parseObject(jSont2Map.cname);
for (Object map : myMaps1.entrySet()) {
System.out.println(((Map.Entry) map).getKey() + " " + ((Map.Entry) map).getValue());
}
//第三种方法,用JSON类的parseObject指定解析类型来解析JSON字符串
Map myMaps2 = JSON.parseObject(jSont2Map.cname, Map.class);
for (Object key : myMaps2.keySet()) {
System.out.println("键为:" + key + " " + "值为:" + myMaps2.get(key));
}
//第四种方法,用JSONObject类的parse来解析JSON字符串
Map myMaps3 = (Map) JSONObject.parse(jSont2Map.cname);
for (Object map : myMaps3.entrySet()) {
System.out.println(((Map.Entry) map).getKey() + " " + ((Map.Entry) map).getValue());
}
//第五种方法,用JSONObject类的parseObject来解析字符串
Map myMaps4 = JSONObject.parseObject(jSont2Map.cname);
for (Object map : myMaps4.entrySet()) {
System.out.println(((Map.Entry) map).getKey() + " " + ((Map.Entry) map).getValue());
}
//第六种方法,用JSONObject类的parseObject指定解析类型来解析JSON字符串
Map myMaps5 = JSONObject.parseObject(jSont2Map.cname, Map.class);
for (Object key : myMaps5.keySet()) {
System.out.println("键为:" + key + " " + "值为:" + myMaps5.get(key));
}
}
}
JSONObject转JSON
package JsonTest;
import com.alibaba.fastjson.JSONObject;
public class Obj2JSON {
//将名为stuinfo的json串转化成JSONObject
String stuinfo = "{\"id\":\"001\",\"name\":\"张三\",\"cname\":{\"school\":\"清华大学\",\"academy\":\"计算机学院\",\"major\":\"计算机科学与技术\",\"classid\":\"一班\"},\"gender\":\"男\"}";
JSONObject jsonObject = JSONObject.parseObject(stuinfo);
//通过key取出来的也为一个JSON串;cname = {"classid":"一班","major":"计算机科学与技术","school":"清华大学","academy":"计算机学院"}
String cname = jsonObject.getString("cname");
JSONObject jsonObject1 = JSONObject.parseObject(cname);
public static void main(String[] agrs) {
Obj2JSON obj2JSON = new Obj2JSON();
String json = (String) JSONObject.toJSON(obj2JSON.cname);
System.out.println(json instanceof String);
String str = JSONObject.toJSONString(obj2JSON.cname);
System.out.println(str instanceof String);
}
}
JSON的字符串在开发中经常用到,Http+json串形式是常见的通讯格式,后端接收到JSON串需要解析出报文的参数,然后去做出相应的处理;请求发送成功后,也需要将进行转化然后返回给前端。