利用GSON解析JSON数据

简介: main.xml如下: TestJavaBean如下: package com.wy;public class TestJavaBean { public String COUPON...

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


 

相关文章
|
5天前
|
存储 JSON JavaScript
【chat-gpt问答记录】python将数据存为json格式和yaml格式
【chat-gpt问答记录】python将数据存为json格式和yaml格式
17 1
|
10天前
|
存储 JSON JavaScript
使用Python处理JSON格式数据
使用Python处理JSON格式数据
|
1天前
|
XML 数据采集 前端开发
五:爬虫-数据解析之xpath解析
本篇文章主要讲述了数据解析中的xpath解析,及相对路径的定位语法。最后以爬取豆瓣top250首页作为示例总结
17 5
五:爬虫-数据解析之xpath解析
|
7天前
|
JSON 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在使用CDAS语法同步MySQL数据到Hologres时,如果开启了字段类型宽容模式,MySQL中的JSON类型会被转换为什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11天前
|
JSON 数据格式 Python
python3 服务端使用CGI脚本处理POST的Json数据
python3 服务端使用CGI脚本处理POST的Json数据
25 6
|
11天前
|
JSON Java 数据格式
java读取接口返回的json数据 (二)
java读取接口返回的json数据 (二)
21 5
|
9天前
|
JSON API 数据格式
如何用 Python 的 requests 库发送 JSON 数据的 POST 请求
使用 requests 库发送 JSON 数据的 POST 请求是一个非常简单且实用的操作。通过将目标 URL 和 JSON 数据传递给 requests.post 方法,你可以轻松发送请求并处理响应。本篇文章介绍了从安装 requests 库,到发送 JSON 数据的 POST 请求,再到处理响应的整个流程。希望这篇文章能帮助你更好地理解并应用这个强大的 HTTP 请求库。
|
10天前
|
XML 数据格式 Python
Python使用xpath对解析内容进行数据提取
在前面的文章当中,已经教大家如何去获取我们需要的数据原文内容,今天就介绍一个用于提取所需数据的方法之一xpath。在后续会讲解bs4(beautifulsoup),re正则表达式。
|
6天前
|
JSON 资源调度 Kubernetes
实时计算 Flink版操作报错合集之解析JSON数组时,遇到报错,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
9天前
|
JSON Go 数据格式
【golang】json数据解析 - 嵌套json解析
【golang】json数据解析 - 嵌套json解析
11 0

推荐镜像

更多