利用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;
	}
}

 

时间: 2024-08-03 18:43:35

利用GSON解析JSON数据的相关文章

Android网络之数据解析----使用Google Gson解析Json数据

[正文] 文章回顾: Android网络之数据解析----SAX方式解析XML数据 一.Json数据的介绍                                                                                                                 Json(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JS的一个子集. Json采用完全独立于语言的文本格式,这使得Jso

json-关于gson解析Json数据出现错误

问题描述 关于gson解析Json数据出现错误 代码如下: private ResponseGetUserByUserId resp; public void onSuccess(int statusCode Header[] headers byte[] responseBody) { String jsonData = new String(responseBody); Log.d(TAGSuccess: "" + jsonData); resp = new Gson().from

Android中使用Gson解析JSON数据的两种方法_Android

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海". 第三种类型是映射(mapping),也就是一个名/值对(

JAVA使用Gson解析json数据实例解析_java

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成.同XML一样是一种"传输格式".JSON采用与编程语言无关的文本格式,便于数据传输.存储.交换. 封装类Attribute: public class Attribute { private int id; private String name; private int age; public int getId() { return id; } p

Android中使用Gson解析JSON数据的两种方法

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海". 第三种类型是映射(mapping),也就是一个名/值对(

我的Android进阶之旅------&amp;gt;解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: [ { id: "NEW2016062800875700", from: "腾讯新闻客户端", qqnews_download_url: "http://inews.qq.com/m?refer=openapi_for_xiaotiancai",

使用Gson解析Json数据

问题描述 我想要解析类似:{"total":100,"rows":[{"key":"key1","value":"value1"}{"key":"key2","value":"value2"}]};这种格式的数据.试用Gson该怎么实现呢? 貌似网上没看到过这样的案例... 问题补充:283433775 写道

Android之解析JSON数据示例(android原生态,FastJson,Gson)

1.json网页代码 <%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8"%><%@page isELIgnored="false" %>${fqs } 2.json数据网页效果图 3.Android代码 布局 <?xml version="1.0" encod

gson-Gson解析json数据返回空值

问题描述 Gson解析json数据返回空值 方法1: String str = object.toString(); Gson gson = new GsonBuilder().create(); complaintDetail = gson.fromJson(str, ComplaintDetail.class); 方法2: if (object.has("node")) { complaintDetail.setNode(object.getString("node&qu