1.FastJson的介绍:
JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址: FastJson
1.2.FastJson的特点:
1.FastJson数度快,无论序列化和反序列化,都是当之无愧的fast
2.功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
3.零依赖(没有依赖其它任何类库)
1.3.FastJson的简单说明:
FastJson对于json格式字符串的解析主要用到了下面三个类:
1.JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换
2.JSONObject:fastJson提供的json对象
3.JSONArray:fastJson提供json数组对象
2.简单用法
//简单的字符串
private static String json= "{\"name\":\"slm\",\"age\":12}";
//json字符串-数组类型
private static final String jsonArray = "[{\"name\":\"slm\",\"age\":12},{\"name\":\"lisi\",\"age\":15}]";
//复杂格式json字符串
private static final String jsonMore= "{"areacode":"江苏省连云港市","countAll":0,"countCorrect":0,"datatime":"4408097","logid":"201604181600001249944032","requestinfo":"{\"sign\":\"4\",\"timestamp\":\"1460966395908\",\"remark\":\"4\",\"subjectPro\":\"123456\",\"interfaceUserName\":\"12345678900987654321\",\"channelno\":\"100\",\"imei\":\"12345678900987654321\",\"subjectNum\":\"18361451463\",\"imsi\":\"12345678900987654321\",\"queryNum\":\"18361451463\"}","requestip":"58.223.4.210","requesttime":"2016-04-18 16:00:00","requesttype":"0","responsecode":"010005","responsedata":"无查询结果"}"
2.1json字符串-简单对象型与JSONObject之间的转换
JSONObject jsonObject = JSONObject.parseObject(json);
//获取name
String name= jsonObject .getString("name");
//获取age
String age= jsonObject .getString("age");
System.out.println(name+","+age)
JSONObject jsonObject = JSONObject.parseObject(json);
String name= jsonObject .getString("name");
//直接转换成json字符串
String jsonString=JSONObject.toJSONString(jsonObject);
2.2 json字符串(数组类型)与JSONArray之间的转换
//已知JSONArray,目标要转换为json字符串
JSONArray jsonArray 1= JSONArray.parseArray(jsonArray );
String jsonString = JSONArray.toJSONString(jsonArray1);
// System.out.println(jsonString);
for (int i = 0; i < jsonArray1.size(); i++) {
JSONObject jsonObject = jsonArray1.getJSONObject(i);
System.out.println("name: " + jsonObject.getString("name") + ":" + " age: "
+ jsonObject.getInteger("aAge"));
}
2.3复杂json格式字符串与JSONObject之间的转换
JSONObject object = JSON.parseObject(jsonMore);
//第一次获取的还是一个json类型的数据
//还需要进一步获取
String object2 = (String)object.get("requestinfo");
JSONObject ss = JSON.parseObject(object2);
String imei = ss.getString("imei");
//通过get可以直接获取数据
String areacode = (String) object.get("areacode");
String responsedata = (String) object.get("responsedata");
String requestip = (String) object.get("requestip");