JSON 之GSON 解析

一、谷歌GSON这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。

二、Gson解析Json步骤

A、服务器端将数据转换成json字符串

首先、服务器端项目要导入Gson的jar包到BuiltPath中。(

Gson的jar:http://code.google.com/p/google-gson/我们还可以下载gson的帮助文档)

JSON<wbr>之GSON<wbr>解析

然后将数据转为json字符串,核心函数是:

publicstaticStringcreateJsonString(Objectvalue)

{

Gsongson=newGson();

Stringstr=gson.toJson(value);

returnstr;

}

B、客户端将json字符串转换为相应的javaBean

首先客户端也要导入gson的两个jar包,json的jar就不需要导入了(因为android项目中已经集成了json的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(核心函数)

publicstatic<T>TgetPerson(StringjsonString,Class<T>cls){

Tt=null;

try{

Gsongson=newGson();

t=gson.fromJson(jsonString,cls);

}catch(Exceptione){

//TODO:handleexception

}

returnt;

}

publicstatic<T>List<T>getPersons(StringjsonString,Class<T>cls){

List<T>list=newArrayList<T>();

try{

Gsongson=newGson();

list=gson.fromJson(jsonString,newTypeToken<List<cls>>(){

}.getType());

}catch(Exceptione){

}

returnlist;

}

publicstaticList<Map<String,Object>>listKeyMaps(StringjsonString){

List<Map<String,Object>>list=newArrayList<Map<String,Object>>();

try{

Gsongson=newGson();

list=gson.fromJson(jsonString,

newTypeToken<List<Map<String,Object>>>(){

}.getType());

}catch(Exceptione){

//TODO:handleexception

}

returnlist;

}

来源:http://blog.sina.com.cn/s/blog_7ffb8dd501013q9c.html

相关推荐