利用GSON解析JSON数据

来源:互联网 发布:2017网络诈骗事件 编辑:程序博客网 时间:2024/06/09 04:12

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_marginTop="20dip"        android:textSize="22sp"        android:text="GSON测试" />             <Button         android:id="@+id/button"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginTop="180dip"        android:text="将复杂JSON转换为JavaBean格式"        /></RelativeLayout>


TestJavaBean如下:

package com.wy;public class TestJavaBean {public String COUPON_NO;public String COUPON_NM;public String COUPON_IMG;public String COUPON_CP;public String COUPON_EXPIRE_DATE;public String COUPON_EXPIRE_START_DM;public String COUPON_EXPIRE_END_DM;public String COUPON_grant_FLAG;public TestJavaBean() {super();}public String getCOUPON_NO() {return COUPON_NO;}public void setCOUPON_NO(String cOUPON_NO) {COUPON_NO = cOUPON_NO;}public String getCOUPON_NM() {return COUPON_NM;}public void setCOUPON_NM(String cOUPON_NM) {COUPON_NM = cOUPON_NM;}public String getCOUPON_IMG() {return COUPON_IMG;}public void setCOUPON_IMG(String cOUPON_IMG) {COUPON_IMG = cOUPON_IMG;}public String getCOUPON_CP() {return COUPON_CP;}public void setCOUPON_CP(String cOUPON_CP) {COUPON_CP = cOUPON_CP;}public String getCOUPON_EXPIRE_DATE() {return COUPON_EXPIRE_DATE;}public void setCOUPON_EXPIRE_DATE(String cOUPON_EXPIRE_DATE) {COUPON_EXPIRE_DATE = cOUPON_EXPIRE_DATE;}public String getCOUPON_EXPIRE_START_DM() {return COUPON_EXPIRE_START_DM;}public void setCOUPON_EXPIRE_START_DM(String cOUPON_EXPIRE_START_DM) {COUPON_EXPIRE_START_DM = cOUPON_EXPIRE_START_DM;}public String getCOUPON_EXPIRE_END_DM() {return COUPON_EXPIRE_END_DM;}public void setCOUPON_EXPIRE_END_DM(String cOUPON_EXPIRE_END_DM) {COUPON_EXPIRE_END_DM = cOUPON_EXPIRE_END_DM;}public String getCOUPON_grant_FLAG() {return COUPON_grant_FLAG;}public void setCOUPON_grant_FLAG(String cOUPON_grant_FLAG) {COUPON_grant_FLAG = cOUPON_grant_FLAG;}@Overridepublic String toString() {return "TestJavaBean [COUPON_NO=" + COUPON_NO + ", COUPON_NM="+ COUPON_NM + ", COUPON_IMG=" + COUPON_IMG + ", COUPON_CP="+ COUPON_CP + ", COUPON_EXPIRE_DATE=" + COUPON_EXPIRE_DATE+ ", COUPON_EXPIRE_START_DM=" + COUPON_EXPIRE_START_DM+ ", COUPON_EXPIRE_END_DM=" + COUPON_EXPIRE_END_DM+ ", COUPON_grant_FLAG=" + COUPON_grant_FLAG + "]";}}


MainActivity如下:

package com.wy;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.params.HttpConnectionParams;import org.apache.http.protocol.HTTP;import org.json.JSONArray;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;/** * Demo描述: * 利用GSON解析JSON数据--将json数据封装到ArrayList<Object>中 * 注意: * JavaBean中的每个变量名于每个JSON数据的字段严格对应. * 比如大小写 * */public class MainActivity extends Activity {   private Gson mGson;   private Button mButton;   private String mJSONData;   private ArrayList<TestJavaBean> mTestJavaBeansArrayList;   private String mUrl="your url";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}private void init(){mButton=(Button) findViewById(R.id.button);mButton.setOnClickListener(new ClickListenerImpl());}private class ClickListenerImpl implements OnClickListener {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button:try {mJSONData = getJSONData();mGson = new Gson();JSONObject jsonObject = new JSONObject(mJSONData);JSONArray jsonArray = jsonObject.getJSONArray("COUPON_LIST");System.out.println("需要转换的JSONArray=" + jsonArray.toString());Type listType = new TypeToken<ArrayList<TestJavaBean>>() {}.getType();mTestJavaBeansArrayList = mGson.fromJson(jsonArray.toString(), listType);System.out.println("linkedList.size()="+ mTestJavaBeansArrayList.size());for (int i = 0; i < mTestJavaBeansArrayList.size(); i++) {TestJavaBean testJavaBean = mTestJavaBeansArrayList.get(i);System.out.println("现在是第" + i + "个数据:" + " "+ testJavaBean.toString());}} catch (Exception e) {}break;default:break;}}}public String getJSONData() {HttpEntity httpEntity = null;HttpResponse response = null;try {Map<String, String> paramsHashMap = new HashMap<String, String>();paramsHashMap.put("IF_NO", "IF0002");paramsHashMap.put("UID", "12345");HttpPost httpPost = new HttpPost(mUrl);DefaultHttpClient httpClient = getHttpClient();List<BasicNameValuePair> postData = new ArrayList<BasicNameValuePair>();for (Map.Entry<String, String> entry : paramsHashMap.entrySet()) {postData.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));}UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postData,HTTP.UTF_8);httpPost.setEntity(entity);response = httpClient.execute(httpPost);httpEntity = response.getEntity();InputStream is = httpEntity.getContent();StringBuffer sb = new StringBuffer();BufferedReader br = new BufferedReader(new InputStreamReader(is));String line = "";while ((line = br.readLine()) != null) {sb.append(line);}            return sb.toString();} catch (Exception e) {}return null;}private DefaultHttpClient getHttpClient() {DefaultHttpClient httpClient = new DefaultHttpClient();HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 8000);HttpConnectionParams.setSoTimeout(httpClient.getParams(), 10000);HttpConnectionParams.setTcpNoDelay(httpClient.getParams(), true);return httpClient;}}


 

原创粉丝点击