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