配色: 字号:
JSON 之FastJson解析
2017-03-28 | 阅:  转:  |  分享 
  
JSON?之FastJson解析一、FastJson简介阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分
,它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任其他的JavaJsonparser。包括自称最快的
JackJson;功能强大,完全支持JavaBean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在J
avaSE5.0以上版本;支持Android;开源(Apache2.0)FastjsonAPI入口类是com.aliba
ba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。public?static?final?
Objectparse(Stringtext);?//把JSON文本parse为JSONObject或者JSONArray?
public?static?final?JSONObjectparseObject(Stringtext);?//把JSON
文本parse成JSONObject?public?static?finalTparseObject(Stringtext,
Classclazz);?//把JSON文本parse为JavaBean?public?static?final?JSONA
rrayparseArray(Stringtext);?//把JSON文本parse成JSONArray?public?st
atic?finalListparseArray(Stringtext,Classclazz);?//把JSON文本pa
rse成JavaBean集合?public?static?final?StringtoJSONString(Objectobj
ect);?//将JavaBean序列化为JSON文本?public?static?final?StringtoJSONStr
ing(Objectobject,?boolean?prettyFormat);?//将JavaBean序列化为带格式的JSO
N文本?public?static?final?ObjecttoJSON(ObjectjavaObject);将JavaBe
an转换为JSONObject或者JSONArray。二、FastJson解析JSON步骤A、服务器端将数据转换成json字符串
首先、服务器端项目要导入阿里巴巴的fastjson的jar包至builtPath路径下(这些可以到fastjson官网下载:ht
tp://code.alibabatech.com/wiki/display/FastJSON/Home-zh)然后将数据转为js
on字符串,核心函数是:publicstaticStringcreateJsonString(Objectvalue){
StringalibabaJson=JSON.toJSONString(value);returnalibabaJso
n;}B、客户端将json字符串转换为相应的javaBean?首先客户端也要导入fastjson的两个jar包1、客户端获取js
on字符串publicclassHttpUtil{?publicstaticStringgetJsonContent(
StringurlStr){try{//获取HttpURLConnection连接对象URLurl=newUR
L(urlStr);HttpURLConnectionhttpConn=(HttpURLConnection)url.
openConnection();//设置连接属性httpConn.setConnectTimeout(3000);htt
pConn.setDoInput(true);httpConn.setRequestMethod("GET");//获取相应
码intrespCode=httpConn.getResponseCode();if(respCode==200)
{returnConvertStream2Json(httpConn.getInputStream());}}catc
h(MalformedURLExceptione){//TODOAuto-generatedcatchblock
e.printStackTrace();}catch(IOExceptione){//TODOAuto-gener
atedcatchblocke.printStackTrace();}return"";}?privatesta
ticStringConvertStream2Json(InputStreaminputStream){Stringj
sonStr="";//ByteArrayOutputStream相当于内存输出流ByteArrayOutputStre
amout=newByteArrayOutputStream();byte[]buffer=newbyte[10
24];intlen=0;//将输入流转移到内存输出流中try{while((len=inputStrea
m.read(buffer,0,buffer.length))!=-1){out.write(buffer,0,l
en);}//将内存流转换为字符串jsonStr=newString(out.toByteArray());}c
atch(IOExceptione){//TODOAuto-generatedcatchblocke.print
StackTrace();}returnjsonStr;}}2、使用泛型获取javaBean(核心函数)publics
taticTgetPerson(StringjsonString,Classcls){Tt=null;try
{?t=JSON.parseObject(jsonString,cls);}catch(Exceptione)
{//TODO:handleexception}returnt;}publicstaticListgetPe
rsons(StringjsonString,Classcls){Listlist=newArrayList()
;try{list=JSON.parseArray(jsonString,cls);}catch(Excepti
one){}returnlist;}publicstaticList>listKeyMaps(Stringjs
onString){List>list=newArrayList>();try{?list=JSON.parseObject(jsonString,newTypeReference>>(){});}catch(Exceptione){//TODO:handleexception}returnlist;}
献花(0)
+1
(本文系关平个人图...首藏)