利用GSON解析JSON数据

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 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;
	}
}


 

相关文章
|
2月前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
66 8
|
1天前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
14天前
|
JSON JavaScript 前端开发
一次采集JSON解析错误的修复
两段采集来的JSON格式数据存在格式问题,直接使用PHP的`json_decode`会报错。解决思路包括:1) 手动格式化并逐行排查错误;2) 使用PHP-V8JS扩展在JavaScript环境中解析。具体方案一是通过正则表达式和字符串替换修复格式,方案二是利用V8Js引擎执行JS代码并返回JSON字符串,最终实现正确解析。 简介: 两段采集的JSON数据因掺杂JavaScript代码导致PHP解析失败。解决方案包括手动格式化修复和使用PHP-V8JS扩展在JavaScript环境中解析,确保JSON数据能被正确处理。
|
2月前
|
数据采集 自然语言处理 搜索推荐
基于qwen2.5的长文本解析、数据预测与趋势分析、代码生成能力赋能esg报告分析
Qwen2.5是一款强大的生成式预训练语言模型,擅长自然语言理解和生成,支持长文本解析、数据预测、代码生成等复杂任务。Qwen-Long作为其变体,专为长上下文场景优化,适用于大型文档处理、知识图谱构建等。Qwen2.5在ESG报告解析、多Agent协作、数学模型生成等方面表现出色,提供灵活且高效的解决方案。
220 49
|
1月前
|
XML JSON JavaScript
HttpGet 请求的响应处理:获取和解析数据
HttpGet 请求的响应处理:获取和解析数据
|
2月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
2月前
|
存储 分布式计算 Java
存算分离与计算向数据移动:深度解析与Java实现
【11月更文挑战第10天】随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggregated Storage and Compute Architecture)和计算向数据移动(Compute Moves to Data)两种架构应运而生,成为大数据处理领域的热门技术。
86 2
|
2月前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
2月前
|
数据采集 存储 自然语言处理
基于Qwen2.5的大规模ESG数据解析与趋势分析多Agent系统设计
2022年中国上市企业ESG报告数据集,涵盖制造、能源、金融、科技等行业,通过Qwen2.5大模型实现报告自动收集、解析、清洗及可视化生成,支持单/多Agent场景,大幅提升ESG数据分析效率与自动化水平。
137 0

推荐镜像

更多