Android开发中相当便捷的JSON反序列化实现(含源代码) 连带有handler和进度条功能

Android中简单的JSON序列化和反序列化 在Android应用程序中,我们经常需要将Java对象序列化为JSON格式,或者将JSON格式的数据反序列化为Java对象。本文将介绍如何在Android中进行简单的JSON序列化和反序列化操作。在上面的代码中,我们首先准备了一个JSON字符串,然后创建了一个Gson实例。最后,我们使用fromJson()方法将JSON字符串转换为Person对象。在上面的代码中,我们首先创建了一个Person对象,然后创建了一个Gson实例。这样,我们就完成了在Android中进行简单的JSON序列化和反序列化操作。 阅读详情

      在开发的应用程序的过程中,我相信json是使用最多的轻量级的数据交换格式,这里我就不介绍有关json的概念了。主要说明一下有关json反序列化的问题,一般情况下我们解析json都是下边这种方式:

				try {
					jObj = new JSONObject(resultString);
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
resultString是json类型的字符串,当转化为JSONObject类之后,我们还需要一个一个的去解析数据 ,

								int status =jObj.getInt("Status");
								String msgString = jObj.getString("Msg");
你是不是会感觉到这样很麻烦呢,特别是对于用的比较多的值得时候。谷歌也发现了这个问题,他们开发出了一个json反序列化包。我们可以将返回的键值格式转化为类的格式,这个时候当我们再次使用的时候,就是类名.属性名就可以获取该变量的值了。我在这里摘取几行关键的代码,

						//httpget请求返回结果
							String str = Common.requestApi("此处填写URL地址 ");
							System.out.println("str" + str);
							//json反序列化函数
							MagazineCategoryResp magazineCatagoryList = gson.fromJson(str, MagazineCategoryResp.class);
							Message message = new Message();
							message.what = 1;
							//把类赋值给message
							message.obj = magazineCatagoryList;
							//发送handler信息  在handler里面进行接收
							handler.sendMessage(message);

就这样就可以实现json反序列化了,这是在handler里面进行处理的,一般情况下我们都是通过网络获取json格式的数据的。反序列化之后我们就可以在handler里面接受该类,然后就可以非常方便的使用变量值了。因为URL是公司的,所以我注释掉了,返回值的类型在源代码里我把打印出来信息放到了注释里,这次得到的编码格式不是UTF-8的,大家凑合着看吧。

handler里面处理数据代码

	Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case 1:
				//反序列化结果在handler里使用
				MagazineCategoryResp magazineCatagoryList = (MagazineCategoryResp) msg.obj;
				//这里打印查看结果  可以以类的方式获取json值
				System.out.println("Result=" + magazineCatagoryList.data.get(0).name);
				tvTest.setText(magazineCatagoryList.data.get(0).name);
				break;
			}
			super.handleMessage(msg);
		}
	};

结果只是测试用的,所以直接使用了get(0)

    这里也使用了handler机制,还有进度条的使用,如果有不懂得可以去论坛里找相关的教程和例子。优快云上也有很多大牛的博客里也有提及。

代码下载

转载请注明出处http://blog.youkuaiyun.com/walker02/article/details/8105936







Android 中使用Gson完成对象的序列化与反序列化 前言: JSON(JavaScript ObjectNotation):是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 Gson简介:Gson是Google提供的用来在java对象和json数据之间进行映射的java类库,可以将一个JSON字符串转成一个java对象(反序列化),或者将java对象转成一个JSON字符串(序列化)。 在Android 下build.gradle下引入依赖: 接下来用一个使用Gson将Student类型对象进行序列化,与反序列 1.Student类 阅读详情

相关推荐

三大主流交易接口实战指南:XTP、CTP与数字货币API的实盘接入解析

本文深入解析了量化交易系统实现实盘交易的关键环节,聚焦于三大主流交易接口的实战接入。详细介绍了证券领域的XTP、期货领域的CTP以及数字货币交易所API的核心特性、代码封装要点与风控实践,并提供了多市场接口整合的统一架构方案,为开发者打通量化交易的“最后一公里”提供了一份接地气的实战指南。

win55的博客 1374

Android开发中相当便捷的JSON反序列化实现(含源代码) 连带有handler和进度条功能...

在开发的应用程序的过程中,我相信json是使用最多的轻量级的数据交换格式,这里我就不介绍有关json的概念了。主要说明一下有关json反序列化的问题,一般情况下我们解析json都是下边这种方式: try { jObj = new JSONObject(resultString); } catch (JSONException e) { // TODO...

移动开发记录 214

Error: dependent ‘..\..\..\..\Qt\5.15.2\msvc2019\include\QtWidgets\QMainWindow‘ does not exist.

核心问题:修改 Build 目录为源码子目录后,MSVC 编译报错,本质是变量设置异常,导致 qmake 生成多余回溯路径;临时解决:在 .pro 文件添加;最优解决:将上述配置写入 Qt 的 msvc 对应 qmake.conf 全局文件,一劳永逸;禁止 qmake 计算路径时向上回溯,避免生成异常路径。

mumufan05的专栏 878

JSON-handle工具安装及使用

点击下载JSON-Handle进入JSON-handle界面后,将要查看的json串粘贴到文本框中后,点击ok 点击上图红框位置,出现操作界面 上图中的1处:上图中的2处:上图中的3处:当结点的值为url时,在1处会显示 Link链接,点击会打开对应的网页,如下图所示: 在上图右下角处,有个齿轮状的图标,点击它即可打开设置面板 在打开的面板中可以对JSON-handle作相应的设置,包括字体,样式等,大家自行去探索吧!

liqinglonguo的博客 5944

RT-Thread新手必看:FMT飞控移植中的5个常见坑及解决方案

本文针对RT-Thread新手在移植FMT开源飞控时遇到的5大核心挑战,提供了深度解决方案。内容涵盖SCons构建系统配置、RT-Thread版本API兼容性处理、BSP与设备驱动适配、TOML系统配置解析以及算法模块集成调试,帮助开发者高效避坑,成功完成飞控移植。

gin88的博客 250

Unity中5分钟实现3D高斯泼溅渲染:从原理到实战部署

3D高斯泼溅(3D Gaussian Splatting)是一种新兴的神经渲染技术,它通过显式地使用大量3D高斯椭球来表示场景,革新了传统的体渲染和神经辐射场(NeRF)方法。其核心原理是将这些3D高斯投影到2D屏幕并进行快速光栅化与Alpha混合,从而绕过了耗时的光线步进,实现了极高的渲染效率。这项技术的价值在于,它能够在消费级GPU上达到实时甚至超实时的帧率,同时保持紧凑的数据表达和惊人的视觉细节,极大地降低了高质量3D重建与渲染的门槛。在应用场景上,它正快速渗透到数字孪生、虚拟现实、文化遗产数字化以及

weixin_29474431的博客 274

JSON使用DateFormatHandling 序列化与反序列化日期设置

1. 序列化日期时的JSON日期格式化处理 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using GongHuiNewtonsoft.Json; namespace JSONDemo { class P

lovegonghui的专栏 7076

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

JasonH2021的博客 403

01-Android 序列化与反序列化

在日常开发过程中,经常遇到程序读取文件,将文件数据转换为对象,程序通过对象传输数据,或者通过对象读取数据。同时也会经常遇到对象数据写入文件操作。如果采用常规的文件读写,然后再进行赋值;那么将耗费很多时间码代码实现,同时,如果在文件参数较多的情况下,采用常规操作将是一个重大工程量。囧o(╯□╰)o那么软件前辈经过日夜奋进,不断创新,总结开发出很多优秀的反序列化及序列化工具/sdk/库,如下图所示通过序列化&反序列化sdk,大大提高软件操作文件效率。

静虚待令,有物混成 972

python全栈入门到实战【基础篇 02】环境搭建:Python解释器与PyCharm、VSCode编辑器安装配置详解

本文详解Python环境搭建步骤。首先安装解释器(运行代码核心),需从官网下载,选3.8及以上版本(勿选2.x)。Windows安装必勾“Add Python.exe to PATH”,验证用`python --version`;Mac选universal2安装包,验证用`python3 --version`。 编辑器二选一:PyCharm社区版(免费,新手推荐),安装后需配置解释器路径;VSCode轻量,需装Python插件并选择解释器。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 5万+

使用C++实现DNS欺骗攻击

其中,domain_name表示需要欺骗的域名,dns_server_ip表示实际DNS服务器的IP地址,fake_ip表示需要重定向到的IP地址。在DNS查询过程中,当客户端向DNS服务器请求解析某个域名时,DNS服务器会返回该域名对应的IP地址。DNS劫持是一种常见的网络攻击方式,通过篡改DNS响应数据,使得用户访问的网站被重定向到攻击者指定的恶意站点。我们使用C++编写一个简单的DNS欺骗程序,使得当客户端请求解析特定的域名时,我们可以将其重定向到指定的IP地址。使用C++实现DNS欺骗攻击。

TechGlide的博客 411

android Handler handler = new Handler() activity内存溢出 activity销毁 handler还调用的问题 多次跳转目标页面

问题:使用Handler handler = new Handler() 在activity中出来异步网络数据,多次调用handler导致activity销毁后 HandleMessage 还能调用 activity中的方法多次跳转目标页面。 原因: activity使用匿名内部类导致handler类对象持有activity引用导致内存溢出,activity没有被回收。所以你以为被销毁activity依然在。 解决:创建自定义接口,和自定义handler类。解耦activity和handle..

qq_36355271的博客 1921

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Unity3D开发实战:高频代码技巧、性能优化与功能实现锦囊

在Unity3D游戏开发中,性能优化与代码组织是决定项目成败的关键。其核心原理在于理解Unity的组件化架构与帧驱动机制,通过面向数据的设计思想,将复杂功能拆解为职责单一的组件,并利用事件进行通信,从而提升代码的可维护性与复用性。这一实践的技术价值在于能显著降低内存泄漏风险,减少GC(垃圾回收)压力,并优化CPU与GPU的执行效率。在应用场景上,无论是处理UGUI动态布局、视频流播放,还是集成外部模型与第三方插件,良好的编码习惯与性能敏感意识都至关重要。本文聚焦于Unity3D开发中的实用代码技巧,深入探讨

weixin_30425949的博客 459

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android面试----Handler

1. Handler的介绍及原理 1.1Handler的介绍 Handler是Android异步消息处理线程相关的概念,其他相关的概念还有Looper、Message等。 异步消息处理线程启动后会进入一个无限循环体中,没循环一次,就从其内部的消息队列中取出一个消息,然后回调对应的消息处理函数,执行完成一个消息后,继续循环。若消息队列为空,线程会阻塞等待。 其实Looper负责的就是创建一个MessageQueue,然后进入一个无限循环体不断从该MessageQueue中读取消息,而消息的创建者就是一个或多个

cxy_SongT的博客 931

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android序列化方案之JSON

一、JSON是什么? 1、定义:JSON全称(JavaScript Object Notation:javaScript的对象表示法),是一种轻量级的数据交换格式。 2、作用:数据标记、存储&传输。 3、特点:读写速度快、解析简单、轻量级、独立于语言和开发平台。 二、JSON格式语法? 1、实例:1个JSON文件里含多个数据,这些数据 以JSON值 的形式存在 { "name": "OrgJson", "sex": "男", "age": "23", ..

sunbinkang的博客 2422

android开发中混淆后Gson序列化、反序列化的那些坑

GSON的序列化与反序列化 GSON是一个很好的工具,使用它我们可以轻松的实现序列化和反序列化.但是当它一旦遇到混淆,就需要我们注意了. 一个简单的类Item,用来处理序列化和反序列化 public class Item { public String name; public int id; } 序列化的代码 Item toSerializeItem = new Item(); toSerializeItem.id = 2; toSerializeItem.name = "

Dream It Possible 4423

Android : 序列化 JSON简单应用

Android : 序列化 JSON 解析数据 简单应用

javaGHui的博客 492

Android Json数据的反序列化

首先是从服务器获取Json数据

u012822634的专栏 989

Android基础学习(十五)—— 序列化与反序列化(包括 JSON、GSON))

Android基础学习

123 2178

android json 反序列化,Android – json-smart反序列化问题

当我尝试将json-smart JSONObject或JSONArray作为可序列化数据传递给Intent serializable extra时,我的Android代码中有一个奇怪的问题. Json-smart是非常快速且精益的JSON解析器实现,我强烈推荐它. JSONObject扩展了HashMap< String,Object>和JSONArray扩展ArrayList<...

weixin_42127369的博客 359

Android Gson Json的反序列化一些细节

这是我使用的Json数据,这里乱码没有关系,这是编码问题,Android模拟器可以识别 使用Gson的fromJson基本用法 gson.fromJson(String str,类.class) 对应 {} JSONObject键值对(Key-value)集合 最好不要有 {key:{}}这种类型 或者gson.fromJson(String str,new TypeToken<List<类>>(){}.getType()); 对应 [{},{}] JSONArray ...

cs_zwf的博客 293

android json 反序列化,Android 中的Json解析工具fastjson 、序列化、反序列化

Android中通常需要訪問服務器,然而服務器返回的數據很多時候都是Json格式1、fastjson簡介阿里巴巴FastJson是一個Json處理工具包,包括“序列化”和“反序列化”兩部分,它具備如下特征:速度最快,測試表明,fastjson具有極快的性能,超越任其他的Java Json parser。包括自稱最快的JackJson;功能強大,完全支持JavaBean、集合、Map、日期、Enum...

weixin_35415045的博客 419

android json 反序列化,在android中反序列化JSON字符串

我有JSON字符串,如下所示{ "Status":"Clear", "Class": [{ {"name":"personA", "available" : 1}, {"name":"personB", "available" : 0}, {"name":"personC", "available" : 0}, {"name":"personD", "available" : 1} }...

weixin_42511201的博客 369

Android gson实现数组与集合的序列化与反序列化

集合的反序列化 需要用TypeToken来获取type

m0_45877477的博客 842

Android 学习笔记(7)之JSON序列化

JSON 1. 读写速度快 2. 解析简单 3. 轻量级 4. 独立于语言,平台 5. 具有自我描叙性 JSON解析方式 1Android Studio自带org.json解析 基于文档驱动 需要把全部文件读入到内存中 然后遍历所有数据,根据需要检索想要的数据 2 Gson 解析gson.toJson、gson.fromJson 基于事件驱动 根据所需取的数据 建立1个对应于JSON数据的JavaBean类,即可通过简单操作解析出所需数据 按需取数据 3,Jackson解析 ObjectMapper ..

xiongtao63的博客 619
上一篇: Android 关于新浪微博字数的处理
下一篇: 解决android有的手机拍照后上传图片被旋转的问题
Steffen02
博客等级 码龄16年 138粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值