一步一步的学习android应用开发到系统底层开发之android数据解析JSON篇

GPS定位系统源码,通用系统源码包含GPS行业核心功能可轻松开发出各类行业应用 本系统 从头到尾都充分考虑专为二次开发而设计, 简介 通用 高效 性能 灵活是这套系统的核心,专为二次开发而生! 本系统包含GPS行业绝大部分核心内容,以及完善的后台角色权限和优秀的缓存处理机制; 所有功能都只做 最基础通用部分 便于用户在此基础上快速开发各类行业应用, 而不用担心拿到一个冗余的系统做二次开发要删除修改N多代码带来的 抓狂 抓狂 抓狂 ! 系统支持接入... 阅读详情

Json的定义:

是一种轻量级的数据交互格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,详见官网网址:http://json.org/。

我们主要关系的是android 为我们提供了那些解析JSON常用的类:

JSONArray:

     它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔。例如:

{"employees": [{ "firstName":"Bill" , "lastName":"Gates" },{ "firstName":"George" , "lastName":"Bush" },{ "firstName":"Thomas" , "lastName":"Carter" }]}


JSONObject:
      可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。
JSONStringer:

      json文本构建类 ,根据官方的解释,这个类可以帮助快速和便捷的创建JSON text。其最大的优点在于可以减少由于 格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。

Json 数据的基本转换:

package com.lupeng.javase.json.test;

import java.text.DateFormat;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.lupeng.javase.json.bean.DateBean;
import com.lupeng.javase.json.bean.JavaBean;
import com.lupeng.javase.json.util.DateDeserializerUtils;
import com.lupeng.javase.json.util.DateSerializerUtils;

@SuppressWarnings("unchecked")
public class GsonTester {
	private static Gson gson = null;
	private static GsonBuilder gsonBuilder = null;

	public static void setUp() {
		gson = new Gson();
		gsonBuilder = new GsonBuilder();
	}

	/**
	 * JavaBean、Json相互转换
	 */

	public void testBeanJson() {
		JavaBean bean = new JavaBean("1001", "scott", 20, "TL");

		// Bean -> Json
		String json = gson.toJson(bean);
		System.out.println(json);

		// Json -> Bean
		bean = gson.fromJson(json, JavaBean.class);
		System.out.println(bean);
	}

	/**
	 * List转换成Json字符串
	 */

	public void testList2Json() {
		// List
		List list = new ArrayList();
		for (int i = 0; i < 5; i++) {
			list.add("element" + i);
		}
		System.out.println(list);

		// List -> Json
		String json = gson.toJson(list);
		System.out.println(json);
	}

	/**
	 * 泛型List、Json相互转换
	 */

	public void testGenericListJson() {
		// 泛型List
		List<JavaBean> list = new ArrayList<JavaBean>();
		for (int i = 0; i < 3; i++) {
			JavaBean user = new JavaBean("100" + i, "name" + i, 20 + i, "BJ"
					+ i);
			list.add(user);
		}
		System.out.println(list);

		// 泛型List -> Json
		java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<JavaBean>>() {
		}.getType();
		String json = gson.toJson(list, type);
		System.out.println(json);

		// Json -> 泛型List
		List<JavaBean> users = gson.fromJson(json.toString(), type);
		System.out.println(users);
	}

	/**
	 * Map转换成Json字符串
	 */

	public void testMap2Json() {
		// Map数据
		Map map = new HashMap();
		map.put("id", "1001");
		map.put("name", "scott");
		map.put("age", 20);
		map.put("addr", "BJ");
		System.out.println(map);

		// Map -> Json
		String json = gson.toJson(map);
		System.out.println(json);
	}

	/**
	 * 泛型Map、Json相互转换
	 */

	public void testGenericMapJson() {
		// 泛型Map数据
		Map<String, JavaBean> map = new HashMap<String, JavaBean>();
		for (int i = 0; i < 5; i++) {
			JavaBean user = new JavaBean("100" + i, "name" + i, 20 + i, "LN"
					+ i);
			map.put("100" + i, user);
		}
		System.out.println(map);

		// 泛型Map -> Json
		java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<Map<String, JavaBean>>() {
		}.getType();
		String json = gson.toJson(map, type);
		System.out.println(json);

		// Json -> Map
		Map<String, JavaBean> users = gson.fromJson(json.toString(), type);
		System.out.println(users);

	}

	/**
	 * 带日期类型Bean、Json相互转换
	 */

	public static void testDateBeanJson() {
		// 日期Bean数据
		DateBean bean = new DateBean("1001", "scott", 20, new Date());

		// Bean(带日期属性) -> Json
		gson = gsonBuilder.registerTypeAdapter(java.util.Date.class,
						new DateSerializerUtils())
				.setDateFormat(DateFormat.LONG).create();
		String json = gson.toJson(bean);
		System.out.println(json);
		// Json -> Bean(带日期类型属性)
		gson = gsonBuilder
				.registerTypeAdapter(java.util.Date.class,
						new DateDeserializerUtils())
				.setDateFormat(DateFormat.LONG).create();
		java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<DateBean>() {
		}.getType();
		DateBean b = gson.fromJson(json, type);
		System.out.println(b);
	}

	/**
	 * 泛型日期List、Json相互转换
	 */

	public static void testDateGenericListJson() {
		// 泛型日期List
		List<DateBean> list = new ArrayList<DateBean>();
		for (int i = 0; i < 3; i++) {
			DateBean user = new DateBean("100" + i, "name" + i, 20 + i,
					new Date());
			list.add(user);
		}
		System.out.println(list);

		// 泛型日期List -> Json
		gson = gsonBuilder
				.registerTypeAdapter(java.util.Date.class,
						new DateSerializerUtils())
				.setDateFormat(DateFormat.LONG).create();
		java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<DateBean>>() {
		}.getType();
		String json = gson.toJson(list, type);
		System.out.println(json);

		// Json -> 泛型日期List
		gson = gsonBuilder
				.registerTypeAdapter(java.util.Date.class,
						new DateDeserializerUtils())
				.setDateFormat(DateFormat.LONG).create();
		List<DateBean> users = gson.fromJson(json.toString(), type);
		System.out.println(users);
	}

	public static void main(String[] args) {

		SimpleDateFormat foo = new SimpleDateFormat();
		System.out.println("foo:" + foo.format(new Date()));

		Calendar gc = GregorianCalendar.getInstance();
		System.out.println("gc.getTime():" + gc.getTime());
		System.out.println("gc.getTimeInMillis():"
				+ new Date(gc.getTimeInMillis()));
		setUp();
		testDateBeanJson();
		testDateGenericListJson();
	}
}

JsonDeserializer 日期序列化问题:

public class DateDeserializer implements JsonDeserializer<Date> {
	public Date deserialize(JsonElement json, Type typeOfT,
			JsonDeserializationContext context) throws JsonParseException {
		String JSONDateToMilliseconds = "\\/(Date\\((.*?)(\\+.*)?\\))\\/";
		Pattern pattern = Pattern.compile(JSONDateToMilliseconds);
		Matcher matcher = pattern.matcher(json.getAsJsonPrimitive().getAsString());
		String result = matcher.replaceAll("$2");
		return new Date(new Long(result));
	}

(带更新................................)

安卓Json数据以及解析为javaBean 安卓解析Json类型数据什么是json使用JSONObject进行解析 什么是json JSON(JavaScript Object Notation,JS 对象简谱) 是一种轻量级的数据交换格式。 示例: [ { "id": "0", "name": "Bilibili", "url": "https://www.bilibili.com/", "version": "1.5" }, { "id": "1", "name": "Baidu", 阅读详情

相关推荐

Android JSON 解析

在 Android 中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,用于客户端与服务器之间的数据传输。Android 提供了多种方式来处理 JSON 数据,本文章介绍了 Android JSON 解析以及 Gson 的使用,和其他第三方库的说明。

天逸的博客 2518

Android应用开发人员定位之我见

定位对于每个程序员来说是一个无法回避的问题,它关系着整个职业生涯的发展。俗话说得好“人无远虑,必有近忧”。 人的精力是有限的,大多数人都是普通人,我们不可能什么都会,我们只要有一项专长即可。     社会分工是商品经济发展的基础。没有社会分工,就没有交换,市场

1061

Android使用JSON解析数据

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于 Web API 交互。Kotlin 提供了多种解析 JSON 数据的方法,其中和Gson是常见的选择。

XHRK1的博客 855

Android 底层基础知识

编译源码 进入 cupcake 工作拷贝的顶层目录,执行: /make_image15.sh 部分执行结果: out/target/product/littleton/root/ 内核需要使用的 initramfs out/target/product/littleton/system文件系统的系统分区 out/...

weixin_34032621的博客 144

Android 解析JSON数据

使用JSONObject解析JSON数据,通过GSON去解析JSON数据。

xaioxaiobai的博客 5891

安卓学习笔记30:解析XML与JSON

文章目录零、学习目标一、解析XML(一)XML概述(二)解析XML的方法二、案例演示 - 读取解析XML(一)运行效果(二)涉及知识点(三)实现步骤三、解析JSON(一)JSON概述(二)解析JSON的方法四、案例演示 - 读取解析SON(一)运行效果(二)涉及知识点(三)实现步骤 零、学习目标 能够读取并解析XML文件 能够读取并解析JSON文件 一、解析XML (一)XML概述 XML(eXtensible Markup Language),可扩展标记语言,标准通用标记语言的子集,是一种用于标记电

howard2005的专栏 1172

Android客户端从服务器端获取json数据并解析的实现代码

首先客户端从服务器端获取json数据 1、利用HttpUrlConnection 复制代码代码如下: /**       * 从指定的URL中获取数组       * @param urlPath       * @return       * @throws Exception       */      public static String rea

sengeiou的专栏 5835

Verilog流水线CPU设计(超详细)

快把这一篇给更了

Ace Cheney的博客 7万+

一步一步的学习android应用开发到系统底层开发之android开发层次及所需技术

一、Android开发的分类: 1、Android客户端应用程序     如新浪微博、网银客户端、凡客、淘宝客户端,快盘客户端。从应用需求上来讲,几乎大一点的网站,都需要有手机客户端程序。 2、Android通用类程序     如基于LBS(基于位置的服务)的应用 (这类一般会嵌入到客户端应用程序中),流媒体播放应用。由于移动设备的方便便捷、3G、4G网络的发展, 这类应用有不错的前景。

1277

Win10下Delphi 10.4.2 (RAD Studio 10.4.2 )安装教程图解

Win10下Delphi 10.4.2 (RAD Studio 10.4.2 )安装和破解教程图解

1万+

cesium 高程数据使用

cesium 高程数据使用高程数据下载高程数据切片简单数据服务 高程数据下载 使用地理空间数据云平台免费提供的高程数据。地理空间云平台 点击列表中的下载得到数据压缩包。例如:ASTGTM2_N22E114.zip 高程数据切片 使用cesium实验室工具对下载得到的压缩包进行切片。cesium实验室 切片得到的文件夹目录。 简单数据服务 使用nodejs的koa启动简单的资源服务。koajs 项目根目录新建data文件夹,在新建dem文件夹放高程数据。 注意目录自行更换,这里是./data/dem

哎哟这个凉白白的博客 1811

安卓开发工程师-数据解析(JSON、XML)

在解析 JSON 或 XML 数据时,可能会出现各种异常,如格式错误、数据缺失、类型不匹配等。为了保证程序的健壮性,需要对这些异常进行合理的处理。在解析 JSON 或 XML 数据时,可以将解析后的数据缓存起来,以便下次使用时可以直接从缓存中获取,而无需重新解析。在 Android 中,可以使用 DOM(Document Object Model)解析器来解析 XML 数据。动态解析是指在不知道 JSON 或 XML 数据的具体结构的情况下,能够灵活地解析和处理数据。包来解析 JSON 数据。

qq_62784677的博客 1049

图形引擎实战:镭射效果制作分享

该方案的优势1.遵循物理的2.可以使用少量的参数去调控镭射的效果。计算相对简单,缺点仍是颜色不能够自定义,还有一种常见的方案是采样一张镭射贴图来模拟,好处是颜色可以自定义同时性能上还很高效没有复杂的公式计算。我查阅了网上普遍的方案,常见的做法是制作一个Ramp图生成工具,然后将生成好的ramp图赋给材质。这两个方案的好处是美术同学可以手动的去控制镭射的颜色。最后就是Shader中对Ramp图的采样的部分,Ramp图的UV坐标是使用fresnel作为Ramp的U轴坐标,0.5作为V轴坐标。

qq_41166022的博客 1353

Android开发json数据解析

在Android开发过程中,或更新数据,或为减轻手机负担将大部分复杂运算交由服务器来进行,都需要与服务器之间进行数据交互,数据交互中,使用的较为频繁的格式变为json数据,书写便捷,操作方便,本文就对于客户端对于获取的json数据的解析进行一定的介绍。了解不是很深刻,只敢说简单应用,请测能用。 json数据书写比较简单,如下: { "age": "24", ...

小晖的博客 4498

ZYNQ RFSoC 的DAC如何做到从 0到Fs频段 信号输出

之前一直没太了解 RFSoC 的DAC如何输出在 Fs/2 到 Fs 频率范围内的信号,例如 ZCU216中的 ZU49DR,其RF-DAC最大采样率是 9.85GSPS,如果想输出的信号中心频率在5.8G,它是如何有效输出在第二奈奎斯特区域范围的信号的。

weixin_44630490的博客 1551

uniapp - 详细实现移动端公众号 H5 网页授权登录流程及示例代码,申请测试公众号全流程及本地调试无需部署上线服务器就能直接调起微信登陆授权页面,手机移动端h5公众号页面利用微登录拿到用户数据!

uni-app,微信公众号,h5网页,uniapp网页端,手机端H5公众号页面,微信网页登陆,uniApp详细实现公众号的登录,微信授权第三方网站登录,流程及逻辑详细教程,OAuth2.0,公众号网页授权,微信网页授权通过code换取网页授权,redirect_url,参数错误,解决,报错,无法调起,如何申请测试公众号,微信公众平台测试号的申请与使用,获取用户openid手机号昵称头像,利用测试号实现本地调试微信登录授权,本地无法调试怎么办,测试公众号,在开发环境下怎么测试,用项目本地ip地址,微信公众号平

🏆 前端领域优质创作者 5063

Android中解析JSON数据

解析JSON数据

Errol's Blog 6436

《Android系统开发中高级定制专栏导读》

欢迎来到【Android 中高级系统定制】专栏!在这里,将深入探讨Android系统开发与定制的方方面面,涵盖从权限管理、驱动开发到系统应用配置等多个领域。

我其实什么都不会 1579

Android开发之JSON数据解析详解(一)

 今天很高兴和大家一起学习Android的JSON数据解析,可能对于学习安卓的朋友都知道JSON在数据解析方面已经很普遍了.所以也是我们必定要了解的知识 ,下面让我们了解一下JSON的发展历程. XML——这种用于表示客户端与服务器间数据交换有效负载的格式,几乎已经成了Web services的同义词。然而,由于Ajax和REST技术的出现影响了应用程序架构,这迫使人们开始寻求`XML的替

知他人之所知,晓他人之不晓。 8036

vue2/3 - 详细对接海康监控实时视频预览和录像回放功能,vue接入使用海康视频监控播放器实时推流等功能,支持hik/rtsp/rtmp/hls/ws取流协议(详细教程与示例代码,一键复制开箱即用

vue2,vue3,海康,vue海康视频监控,海康开放平台,如何接入海康的实时监控,海康威视,Vue实现海康监控视频播放,vue3对接海康视频监控播放、回放的方法流程,实现海康H5视频插件播放视频的实例,web网页接入海康,海康威视的视频vue的录像回放和实时预览,前端vue3项目接入海康威视h5player.js播放器,vue2接入海康威视视频监控平台,使用海康监控H5视频播放,对接海康视频监控,海康视频web插件,web前端在vue中通过海康插件嵌入视频,实现实时预览,vue3海康监控播放器组件,vue

✅ 精选推荐文章 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android开发笔记之Json解析

在上篇文章中我们提到在Android开发中经常用到xml文件,当然跟服务器打交道,大部分还是喜欢用Json数据。Json的定义:一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。JSON Vs XML1.JSON和XML的数据可读性基本相同2.JSON和XML同样拥有丰富的解析手段3.JSON相对于XML来讲,数据的体积小4.JSON与JavaScript的交互更加方便5.JSON对数据

minigeek的博客 5350

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

《Android 应用开发基础教程》——第十章:使用 Gson 实现网络 JSON 数据解析与对象映射

Gson 是 Google 提供的 JSON 库,能轻松实现:JSON ➜ Java 对象(反序列化)Java 对象 ➜ JSON 字符串(序列化)java复制编辑// Getter/Setter 省略,可使用 Lombok 自动生成 }

WenJGo的博客 1516

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android解析JSON格式数据

Android解析JSON格式数据

Android应用开发工程师 1883

Android手机应用开发(十) | HttpURLConnection的使用以及解析JSON数据

Android API Bitmap JSON RxJava RecyclerView Handle 实验目的 学会使用HttpURLConnection请求访问Web服务 学习Android线程机制,学会线程更新UI 学会解析JSON数据 学习CardView布局技术 效果 添加依赖 //json解析类 implementation 'com.squareup.retrofit2:...

Janking's Blog 2083

安卓中解析json数据

一、概述 JSON是JavaScript Object Notation的简称,起源于js(javascript)它是一种轻量级的数据交换格式,JSON不仅在js中广泛使用,同时还在其他领域得到广泛使用,如c,c++,java,Php,swift等等,成为了一种通用的理想数据交换格式,它有两种数据结构,分别是对象,数组,它形式上有花括号{}和中括号[]嵌套,{}中的是代表对象,[]中的为数组,即对象

钟小林的博客 6074

Android JSON数据解析

Android 开发中 JSON 数据解析方法对比:原生 JSONObject/JSONArray 适合简单场景,Gson 提供自动映射简化代码,Moshi 在 Kotlin 项目中性能更优。三种方式均需添加网络权限,示例展示了从网络请求到解析的完整流程,开发者可根据项目需求选择合适方案。

m0_57545130的博客 1367
下一篇: 一步一步的学习android应用开发到系统底层开发之android开发层次及所需技术
FreeYandroid
博客等级 码龄15年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值