Android - 网络编程 - JSON - 格式

南邮通达Android studio实验二——天气应用 在doInBackground方法中,通过URL类获取指定URL的输入流,并使用BufferedReader读取输入流数据保存到StringBuilder中,最终返回字符串形式的响应结果。在onPostExecute方法中,如果接收到了响应结果,则将JSON格式的数据解析为对应的天气信息,然后将这些信息显示在TextView控件上。特点:HttpURLConnection是Java的标准类,什么都没封装,使用起来较为原始,对于重访问的自定义以及一些高级功能等,可能需要更多的代码和配置。 阅读详情

原文:http://blog.youkuaiyun.com/brucecheng22/article/details/17185135


今天很高兴和大家一起学习Android的JSON数据解析,可能对于学习安卓的朋友都知道JSON在数据解析方面已经很普遍了.所以也是我们必定要了解的知识 ,下面让我们了解一下JSON的发展历程.

XML——这种用于表示客户端与服务器间数据交换有效负载的格式,几乎已经成了Web services的同义词。然而,由于Ajax和REST技术的出现影响了应用程序架构,这迫使人们开始寻求`XML的替代品,如:JavaScript Object Notation(JSON)。

  JSON 作为一种更轻、更友好的 Web services客户端的格式(多采用浏览器的形式或访问 REST风格 Web服务的Ajax应用程序的形式)引起了 Web 服务供应商的注意。

  本文将阐述JSON在Web services设计中备受推崇的原因,以及它作为XML替代方案的主要优势和局限性。文中还会深入探讨:随着相应的Web 服务客户端选择使用JSON,如何才能便捷地在Java Web services中生成JSON输出。

XML的十字路口: 浏览器和 Ajax

  XML设计原理已经发布了将近十年。时至今日,这种标记语言已经在广阔的软件应用领域中占据了主导地位。从Java、.NET等主流平台中的配置和部署描述符到应用集成场景中更复杂的应用,XML与生俱来的语言无关性使之在软件架构师心目中占据着独特的地位。但即便最著名的XML权威也不得不承认:在某些环境中,XML的使用已经超出了它自身能力的极限。

  围绕Ajax原理构建的那些Web应用程序最能说明XML的生存能力,从这一点来看,一种新的有效负载格式的发展壮大也得益于XML。这种新的有效负载格式就是JavaScript Object Notation (JSON)。在探索这种新的标记语言的复杂性之前,首先来分析一下在这种独特的设计形式中,XML具有哪些局限性。

  Ajax建立了一个用于从远程Web services发送和接收数据的独立信道,从而允许Web程序执行信道外(out-of-band)客户端/服务器调用。通俗地说,Ajax程序中的更新和导航序列在典型的客户端/服务器环境之外完成,在后台(即信道外)接受到信息后,必须进行一次完整的屏幕刷新。更多背景信息,请参阅David Teare的 Ajax简介(Dev2Dev)。

  这些应用程序更新通常是通过REST风格(RESTful)Web services获得的,一旦被用户的浏览器接收到,就需要整合到HTML页面的总体布局之中,这正是XML发挥强大力量的场合。尽管近年来,脚本语言支持和插件支持已使大多数主流浏览器的功能得到了强化,但许多编程任务依然难于开展,其中之一就是操纵或处理文本,这通常是使用DOM实现的。

  采用DOM的复杂性源于其基于函数的根,这使得对数据树的简单修改或访问都需要进行无数次方法调用。此外,众所周知,DOM在各种浏览器中的实现细节不尽相同,这一过程将带来极为复杂的编程模式,其跨浏览器兼容性出现问题的可能性极大。接下来的问题显而易见,那就是:如何使一种标记语言轻松集成到HTML页面中以满足Ajax的要求?

  问题的答案就是:利用所有主流浏览器中的一种通用组件——JavaScript引擎。XML需要使用DOM之类的机制来访问数据并将数据整合到布局之中,采用这种方法,我们不再使用像XML这样的格式来交付Ajax更新,而是采用一种更为简单直观的方式,采用JavaScript引擎自然匹配的格式——也就是JSON。

  既然已经明确了JSON与XML和Ajax之间的关系,下面将进一步探讨JSON背后的技术细节。

SON剖析:优点和不足

  对于JSON,首先要明白JSON和XML一样也是一种简单文本格式。相对于XML,它更加易读、更便于肉眼检查。在语法的层面上,JSON与其他格式的区别是在于分隔数据的字符,JSON中的分隔符限于单引号、小括号、中括号、大括号、冒号和逗号。下图是一个JSON有效负载:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. {"addressbook": {"name": "Mary Lebow",  
  2.     "address": {  
  3.         "street": "5 Main Street"  
  4.         "city": "San Diego, CA",  
  5.         "zip": 91912,  
  6.     },  
  7.     "phoneNumbers": [  
  8.         "619 332-3452",  
  9.         "664 223-4667"  
  10.     ]  
  11.  }  
  12. }  

上面的格式没看清楚不要紧,我们慢慢来分析.

下面我们来看看JSON的数据结构:

1.JSON数据结构

  在JSON中有两种数据结构:对象和数组。

1.1对象

  在JSON中,一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号),冒号后是该名称的值,多个“名称:值”之间使用 “,”(逗号)分隔开来。名称需要使用双引号括起来,值如果是字符串则必须用双引号括起来,如果是数值型则不需要。其结构示意图如图1所示。

例如:


[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. {  
  2.   
  3. "name":"BruceCheng",   
  4.   
  5. "age":22,  
  6.   
  7. "address":"安徽省合肥市"  
  8.   
  9. }  

1.2数组

  在JSON中,数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用 “,”(逗号)分隔开来。其结构示意图如图2所示。


例如:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. ["Android","IOS","Syphone","BlackBerry"]  

那么在JSON数据中值的类型有哪些呢?

竟然JSON的数据类型是多种多样的那么我们就可以利用不同类型的数据组合成复杂的数据类型:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. {"addressbook": {"name": "Mary Lebow",  
  2.      "address": {  
  3.          "street": "5 Main Street"  
  4.          "city": "San Diego, CA",  
  5.          "zip": 91912,  
  6.      },  
  7.      "phoneNumbers": [  
  8.          "619 332-3452",  
  9.          "664 223-4667"  
  10.      ]  
  11.   }  
  12.  }  

我们来分析分析:

从上面整体来看是一个Object类型,该Object类型中有一个成员为:"addressbook"

"addressbook"的数据结构又是一个Object类型,

该Object类型又包含三个成员,分别是"name","address","phoneNumbers"

这三个成员数据结构的类型分别是:String,Object,Array,

"name"的值为String类型

"address"的数据结构为Object类型,它又包含三个子成员,分别是:"street","city","zip",这三个成员的数据结构类型的类型均为String类型,
"phoneNumbers"成员的数据结构为数组类型,包含两个成员为String类型.

好的今天就简单的介绍JSON的基本情况,下一篇我为大家介绍JSON工作的基本原理以及简单的使用


【Chisel】2.4 时序逻辑 2.4 时序逻辑@[TOC](2.4 时序逻辑)前言寄存器(`Reg`)实例Chisel的状态函数实例2 RegNext实例3 RegInit移位器附录 显式的时钟信号和复位信号 前言 没有状态机的逻辑电路是不完整的,没有状态机的逻辑电路是不完整的,没有状态机的逻辑电路是不完整的,重要的事情说三遍。 这一节我们将要学习Chisel中的时序逻辑。在最后我们会实现一个移位器。 这里你需要知道的是,前面的这几节实际上都是对Chisel的基础语法的学习,它并不会给你带来很大的“惊喜”。Chisel真正的作用是把电路 阅读详情

相关推荐

HWDB1.1数据集处理全攻略:从gnt文件到PNG图片的完整转换教程

本文提供了HWDB1.1数据集处理的完整教程,详细解析了gnt二进制文件格式,并给出了从文件解析、标签映射到批量转换为PNG图片的Python脚本。教程涵盖了环境准备、跨平台解压方案,以及为PyTorch等深度学习框架准备数据的最佳实践,是进行手写汉字识别研究不可或缺的实用指南。

2w3e4r5t6y的博客 630

Android解析JSON数据

JSONObject是Android内置的JSON解析库,通过它可以将JSON字符串转换为Java对象或将Java对象转换为JSON字符串。GSON是Google开源的Java JSON解析库,支持将JSON字符串自动转换为Java对象,同时也支持将Java对象自动转换成JSON字符串。String jsonString = "{'name':'张三','age':25}";String jsonString = "{'name':'张三','age':25}";2)将JSON字符串转换为Java对象。

qq_41878758的博客 4874

Jaspersoft Studio 6.20.0 免注册安装指南(附下载链接)

本文提供了Jaspersoft Studio 6.20.0社区版的免注册安装详细指南。文章介绍了绕过官网注册获取安装包的多种可靠途径,并逐步详解了从启动安装器到首次运行的全过程,帮助用户快速完成安装与基础配置,高效开启报表设计工作。

mars5的博客 1696

Android JSON数据解析

对于网络编程中JSON解析数据的一些看法

qq_53958979的博客 5080

ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储

ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储 508A内部存储区介绍 Data Zone Config Zone 508A Config Zone配置(自定义) - ATECC508A芯片在使用之前,需要自定义配置ConfigZone与DataZone,并同Lock命令将两个区域锁住,否则无法正常使用功能。而一旦锁上就是永久性的,配置区不能够进行解锁

HowieXue 薛永浩的博客 2万+

华为OD机试真题2026双机位C卷 Python&JS 实现【明日之星选举】

给定一组选票votes。votes[i]代表第 i 张选票的内容,包含一个字符串"zhangsan,hanmei",表示推荐zhangsan为明日之星,反对 hanmei 称为明日之星。赞成或反对使用逗号(,)分割。 给定一个数组n,表示最后将筛选出赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。

MISAYAONE的博客 319

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

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

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

SPI为什么不需要加上拉电阻

大家好,我是记得诚。I2C因为其开漏的结构,无法输出高电平,所以外部加上拉电阻。我们在使用SPI的时候,发现是不需要加上拉电阻的。主要因为SPI多为推挽的结构,推挽电路,高低电平都可以输出,所以外部不需要加上拉电阻。推挽电路可以用2个三极管或者2个MOS管搭建而成。

记得诚 2628

Android开发json数据解析

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

小晖的博客 4498

海外购物商城源码 带即时通讯IM源码

在海外购物商城中,即时通讯IM源码可以为用户提供更便捷、高效的沟通方式,帮助解决跨国交易中的语言和文化差异问题。总之,即时通讯IM源码在海外购物商城中扮演着重要的角色,可以为用户提供更方便、高效的沟通方式,解决跨国交易中的语言和文化差异问题。(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买)实时翻译:即时通讯IM源码提供实时翻译功能,能够快速准确地翻译不同语言之间的文字、语音、视频等信息,帮助用户克服语言障碍。

很酷的站长的博客 259

【100%通过率】2023华为od机试C卷【电脑病毒感染】Python 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 3033

android开发之JSON数据解析

android开发之JSON数据解析 本博文主要讲述的是使用google的lib库gson解析JSON数据的方法,因为android自带的JSON数据解析器对只可以在android 3.0以上版本才能适用,如果需要使用gson,我们需要在项目中添加gson的lib库文件,然后add path。详细代码如下: MainActivyty.java: package com.exa

Winter专栏 904

openlayers6/7 行政区划裁剪 只显示某个区域 示例为天地图

openlayers6/7 行政区划裁剪 只显示某个区域 示例为天地图。

qq_36287830的博客 3103

Android之网络编程(四)解析 JSON 格式数据

Android之网络编程(四)解析 JSON 格式数据 一,使用JSONObject 解析 JSON 数据也有很多种方法,可以使用官方提供的 JSONObject,也可以使 用谷歌的开源库 GSON。另外,一些第三方的开源库如 Jackson、FastJSON 等也非常不错。 本节中我们就来学习一下前两种解析方式的用法。 修改 MainActivity 中的代码,如下所示: publi

航天飞哥的博客 594

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

第一行代码Android 第九章9.4-9.5(解析JSON格式,网络编程最佳实践:发送HTTP请求的代码)

Android:解析JSON格式,网络编程最佳实践:发送HTTP请求的代码

XXX_17的博客 801

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

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

Android之网络技术、XML、JSON格式

9.1 WebView (控件之一)的用法 WebView控件可以帮我们在自己的应用程序里嵌入一个浏览器,从而非常轻松地展示各种各样的网页。下面我们就来实践一下 然后我们修改MainActivity中的代码: ①这里调用getSettings()方法可以设置一些浏览器的属性,其中setJavaScriptEnabled()方法让WebView支持JavaScript的脚本的; ②调用setWebViewClient()方法并传入一个实例,其作用是:当需要从一个网页跳转到另一个网页时,我们希望目标网页仍然

Cristiano_san的博客 430

Android学习记录——9.网络编程

文章目录1.WebView的用法2.使用HTTP协议访问网络2.1 使用HttpURLConnection2.2 使用OkHttp3.解析XML格式数据3.1 Pull解析方式3.2 SAX解析方式4.解析JSON格式数据4.1 使用JSONObject4.2 使用GSON5.网络编程的最佳实践 1.WebView的用法 有时候我们可能会碰到一些比较特殊的需求,比如说要求在应用程序里展示一些网页。...

赈川 516

android怎么根据标题解析json,Android 中对JSON数据解析实例代码

Android 中对JSON数据解析在Android的网络编程中,JSON是比XML使用更为广泛的数据传输机制。在许多的http网络请求或接口调用中,返回的很多都是JSON。所以学会解析JSON是学会Android的基本技能。简单介绍下JSON,JSON是轻量级的文本数据交换格式,独立于语言和平台。比XML更小,更快,更易解析。JSON是用键值对来保存数据的。JSON保存的值可以是数字、字符串、布...

weixin_39552304的博客 105

基于Http协议的Android网络编程

基于Http协议的Android编程知识点概要 Android平台网络相关API接口 java.net.*(标准Java接口)  java.net.*提供与联网有关的类,包括流、数据包套接字(socket)、Internet协议、常见Http处理等。比如:创建URL,以及URLConnection/HttpURLConnection对象、设置链接参数、链接到服务器、向服务器写数据

张小贝的博客 2057

14.Android学习之网络编程及Internet应用(二)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,其语法简洁,不仅易于阅读和编写,而且也易于机器的解析和生成。JSON通常由两种数据结构组成,一种是对象(“名称/值”形式的映射),另一种是数组(值的有序列表)。ISON没有变量或其他控制,只用于数据传输。◆对象在JSON中,可以使用下面的语法格式来定义对象。{“属性1”属性值1,“属性2”属性值2......“属性n”属性值n}◎属性1~属性n用于指定对象拥有的属性名。◎属性值1~属性值n。...

ttycr的博客 780

Android网络编程

Android平台网络相关API接口 java.net.*(标准java接口)   提供与联网有关的类,包括流,数据包套接字(socket)、 Internet协议、 常见Http处理等。   比如:创建URL ,以及URLConnection/HttpURLConnection对象、设置链接参数、链接到服务器、向服务器写数据、从服务器读取数据等通信。这些在Java网络编程中均有涉及。 Or...

kpacnB_Z的博客 746

Android 网络编程 记录

看了深入理解Android网络编程感觉不错,今天对Android网络编程进行了要点记录。该书详细讲解了Android开发要点,并用源码案例进行了详细说明,使笔者从原理上加深对相关知识点的理解。

m0_67390379的博客 304

android解析服务器json,深入浅析Android JSON解析

json语法首先看json的语法和结构,这样我们才知道怎么去解析它。json语法时javascript对象表示语法的子集。json的值可以是:数字(整数或者浮点数)字符串(在双引号内)逻辑值(true 或 false)数组(使用方括号[]包围)对象( 使用花括号{}包围)nulljson中有且只有两种结构:对象和数组。1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:valu...

weixin_29205061的博客 477

Android 与 Http获取数据(与JSON解析)

零、 零点一 现在我们一般用各种框架来开发,确实方便使用,但是我觉得作为初学者,这些基础的东西是必不可少的。所以和大家分享一下基础的网络编程。 一、Http?JSON? Http是应用层的协议,使用的TCP/ip协议传输数据。我们在Android中使用Http来连接服务器获取数据或者上传数据。 JSON,我们先来看看百度怎么说的。 JSON(JavaScript Object Notation...

weixin_34331102的博客 1724
上一篇: Android - 多线程 - AsyncTask
下一篇: Android - 网络编程 - JSON - 处理
G机器猫
博客等级 码龄16年 106粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值