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;} |
|