数据格式利用GSON接卸JSON数据

最近一直在学习数据格式之类的问题,现在正好有机会和大家讨论一下.

    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;
	}
	@Override
	public 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";
	@Override
	protected 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 {
		@Override
		public 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;
	}
}

    
 

文章结束给大家分享下程序员的一些笑话语录: 一条狗在街上闲逛,看见橱窗里一张告示:「招聘程序员。会编程,有团队精神,至少精通两种语言。均等机会。」
  那条狗就进去申请,但是被拒绝了。
  「我不能雇一条狗在公司里做事。」经理说。
  狗不服气,指着告示上「均等机会」几字抗议。
  经理没法,叹了口气,不屑地问道:「你会编程吗?」
  那条狗默默地走到电脑前,编了个程序,运作准确。
  「你有团队精神吗?」经理问。
  那条狗掉头看了看门外,一大群野狗在外面虎视耽耽。
  「我真的不能雇狗做这份工作。」经理气急败坏地说。
  「就算会编程、有团队精神,但是我需要的雇员至少要能精通两种语言。」
  那条狗抬头看着经理说:「喵-噢。」

原文地址:https://www.cnblogs.com/xinyuyuanm/p/3043213.html