JSON 之FastJson解析
一、阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的JavaJsonparser。包括自称最快的JackJson;
功能强大,完全支持JavaBean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在JavaSE5.0以上版本;支持Android;开源(Apache2.0)
FastjsonAPI入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
publicstaticfinalObjectparse(Stringtext);//把JSON文本parse为JSONObject或者JSONArray
publicstaticfinalJSONObjectparseObject(Stringtext);//把JSON文本parse成JSONObject
publicstaticfinalTparseObject(Stringtext,Classclazz);//把JSON文本parse为JavaBean
publicstaticfinalJSONArrayparseArray(Stringtext);//把JSON文本parse成JSONArray
publicstaticfinalListparseArray(Stringtext,Classclazz);//把JSON文本parse成JavaBean集合
publicstaticfinalStringtoJSONString(Objectobject);//将JavaBean序列化为JSON文本
publicstaticfinalStringtoJSONString(Objectobject,booleanprettyFormat);//将JavaBean序列化为带格式的JSON文本
publicstaticfinalObjecttoJSON(ObjectjavaObject);将JavaBean转换为JSONObject或者JSONArray。
二、FastJson解析JSON步骤
A、服务器端将数据转换成json字符串
首先、服务器端项目要导入阿里巴巴的fastjson的jar包至builtPath路径下(这些可以到fastjson官网下载:http://code.alibabatech.com/wiki/display/FastJSON/Home-zh)
JSON<wbr>之FastJson解析然后将数据转为json字符串,核心函数是:
publicstaticStringcreateJsonString(Objectvalue)
{
StringalibabaJson=JSON.toJSONString(value);
returnalibabaJson;
}
B、客户端将json字符串转换为相应的javaBean
首先客户端也要导入fastjson的两个jar包
1、客户端获取json字符串
publicclassHttpUtil
{
publicstaticStringgetJsonContent(StringurlStr)
{
try
{//获取HttpURLConnection连接对象
URLurl=newURL(urlStr);
HttpURLConnectionhttpConn=(HttpURLConnection)url
.openConnection();
//设置连接属性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
//获取相应码
intrespCode=httpConn.getResponseCode();
if(respCode==200)
{
returnConvertStream2Json(httpConn.getInputStream());
}
}
catch(MalformedURLExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
catch(IOExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
return"";
}
privatestaticStringConvertStream2Json(InputStreaminputStream)
{
StringjsonStr="";
//ByteArrayOutputStream相当于内存输出流
ByteArrayOutputStreamout=newByteArrayOutputStream();
byte[]buffer=newbyte[1024];
intlen=0;
//将输入流转移到内存输出流中
try
{
while((len=inputStream.read(buffer,0,buffer.length))!=-1)
{
out.write(buffer,0,len);
}
//将内存流转换为字符串
jsonStr=newString(out.toByteArray());
}
catch(IOExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnjsonStr;
}
}
2、使用泛型获取javaBean(核心函数)
publicstaticTgetPerson(StringjsonString,Classcls){
Tt=null;
try{
t=JSON.parseObject(jsonString,cls);
}catch(Exceptione){
//TODO:handleexception
}
returnt;
}
publicstaticListgetPersons(StringjsonString,Classcls){
Listlist=newArrayList();
try{
list=JSON.parseArray(jsonString,cls);
}catch(Exceptione){
}
returnlist;
}
publicstaticList>listKeyMaps(StringjsonString){
List>list=newArrayList>();
try{
list=JSON.parseObject(jsonString,
newTypeReference>>(){
});
}catch(Exceptione){
//TODO:handleexception
}
returnlist;
}
来源:http://blog.sina.com.cn/s/blog_7ffb8dd501013qas.html