配色: 字号:
Android利用Gson实现对象和Json数据的相互转换
2016-10-26 | 阅:  转:  |  分享 
  
Android利用Gson实现对象和Json数据的相互转换

MainActitity如下:



packagecc.test;

importandroid.app.Activity;

importandroid.os.Bundle;

/

Demo描述:

利用Gson实现对象和Json数据的相互转换



Demo描述:

通过一个网络请求,获取JSON数据



注意:

1网络请求的参数是JSON格式的数据

2请求结果返回的亦是JSON格式的数据



/

publicclassMainActivityextendsActivity{

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

init();

}



privatevoidinit(){

newThread(){

publicvoidrun(){

GetJsonDataByPosthttpJsonPost=newGetJsonDataByPost();

String[]pathArray=httpJsonPost.getPathArray("dev0003");

for(inti=0;i
System.out.println(pathArray[i]);

}

}

}.start();



}

}





GetJsonDataByPost如下:



packagecc.test;



importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.io.UnsupportedEncodingException;



importorg.apache.http.HttpResponse;

importorg.apache.http.client.ClientProtocolException;

importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.entity.StringEntity;

importorg.apache.http.impl.client.DefaultHttpClient;

importorg.apache.http.params.HttpConnectionParams;

importorg.apache.http.protocol.HTTP;



publicclassGetJsonDataByPost{

staticprivateStringService_URL="Yoururl";

staticprivateintTIMEOUT=1201000;

StringmMethodName;



publicString[]getPathArray(Stringdevnum){

try{

mMethodName="GetPicByUser";

String[]pathArray=null;

//将调用API的参数封装成JSON格式

StringjsonParams=JsonUtils.getJsonRequestParams(devnum);

//返回的JSON数据

StringjsonResult=getJsonDataByPost(jsonParams);

//从返回的JSON数据获取其包含的一个数组

pathArray=JsonUtils.getJsonRequestResponse(jsonResult);

returnpathArray;

}catch(Exceptione){

e.printStackTrace();

}

returnnull;

}



publicStringgetJsonDataByPost(Stringjson){

Stringresult=null;

try{

StringEntityentity=newStringEntity(json,HTTP.UTF_8);

entity.setContentType("application/json");



DefaultHttpClientclient=newDefaultHttpClient();

client.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT,TIMEOUT);

client.getParams().setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT,TIMEOUT);



if(mMethodName==null){

returnnull;

}



HttpPosthttpPost=newHttpPost(Service_URL+mMethodName);

httpPost.setEntity(entity);

HttpResponseresponse=client.execute(httpPost);

InputStreaminputStream=response.getEntity().getContent();

StringBufferbuffer=newStringwww.wang027.comBuffer();

InputStreamReaderinputReader=newInputStreamReader(inputStream);

BufferedReaderbufferReader=newBufferedReader(inputReader);

Stringstr=newString("");

while((str=bufferReader.readLine())!=null){

buffer.append(str);

}

bufferReader.close();

result=buffer.toString();

System.out.println("--->API的请求结果result="+result);

}catch(UnsupportedEncodingExceptione){

e.printStackTrace();

}catch(ClientProtocolExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}

returnresult;

}

}



JsonUtils如下:



packagecc.test;



importcom.google.gson.Gson;

importcom.google.gson.JsonSyntaxException;

publicclassJsonUtils{

//该对象用于封装请求API的参数.

//请求时会将该对象转换为JSON格式的数据

staticclassJsonRequestParams{

Stringdevsn;

intuploadid;

floathealthScore;

}

//该对象用于封装请求API返回后的结果.

//即会将JSON格式的数据结果封装成该对象

staticclassJsonRequestResult{

Stringresultcode;

intuploadid;

String[]pics;

floatbeat;

Stringcrtime;

}



//将请求的参数封装成JSON的格式

publicstaticStringgetJsonRequestParams(Stringdevnum){

try{

JsonRequestParamsjsonRequestParams=newJsonRequestParams();

jsonRequestParams.devsn=devnum;

jsonRequestParams.uploadid=0;

jsonRequestParams.healthScore=0.0f;

Gsongson=newGson();

//将对象转换为JSON数据

StringjsonRequestParamsString=gson.toJson(jsonRequestParams);

System.out.println("--->封装后的API请求参数jsonRequestParamsString="+jsonRequestParamsString);

returnjsonRequestParamsString;

}catch(Exceptione){

e.printStackTrace();

}

returnnull;

}







publicstaticString[]getJsonRequestResponse(Stringret){

try{

Gsongson=newGson();

//将返回的JSON数据转换为对象JsonRequestResult

JsonRequestResultmJsonGetPicResponse=gson.fromJson(ret,JsonRequestResult.class);

if(mJsonGetPicResponse.resultcode.contains("ok")){

//从对象中获取除pics外的各个字段且输出显示

System.out.println("--->mJsonGetPicResponse.resultcode="+mJsonGetPicResponse.resultcode);

System.out.println("--->mJsonGetPicResponse.beat="+mJsonGetPicResponse.beat);

System.out.www.baiyuewang.netprintln("--->mJsonGetPicResponse.uploadid="+mJsonGetPicResponse.uploadid);

System.out.println("--->mJsonGetPicResponse.crtime="+mJsonGetPicResponse.crtime);

//从对象中获取pics字段,且返回

returnmJsonGetPicResponse.pics;

}

}catch(JsonSyntaxExceptione){

e.printStackTrace();

}

returnnull;

}

}





main.xml如下:






android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#ffffff">




android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="HelloEveryone"

android:layout_centerInParent="true"/>





献花(0)
+1
(本文系thedust79首藏)