`
kirin
  • 浏览: 61990 次
社区版块
存档分类
最新评论

Android上基于JSON的数据交互应用

阅读更多

JSON的定义:

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

为什么用JSON

很简单,因为它比xml快十倍。

有哪些应用案例?

         Twitter、豆瓣、facebook等公司的开放api,一般这些服务都会提供多种格式供开发人员选择(xmljsonatom),而在手机终端上,我们自然希望给用户最佳体验,所以我选用最有效率的json格式。

 

按照我的文档习惯,将会附上具体demo在本文档末尾中可找到下载,其中的示例是用豆瓣api

 

JSON的结构:

Name/Value Pairs             类似所熟知的Keyed listHash tableDisctionaryAssociative array。在Android平台中同时存在另外一个类“Bundle”,某种程度上具有相似的行为。

org.json.JSONObject     Array,一组有序的数据列表。org.json.JSONArray

 

Android JSON相关的类(4)Exceptions(1)

l  JSONArray

l  JSONObject

l  JSONStringer

l  JSONTokener

l  JSONException

 

 

JSONObject:

这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External:应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被大括号包裹,其中的KeyValue被冒号":"分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put("JSON", "Hello, World!"),在KeyValue之间是以逗号","分隔。

 

 

 

 

Value的类型包括:BooleanJSONArrayJSONObjectNumberString或者默认值JSONObject.NULL object

 

有两个不同的取值方法:

get(): 在确定数值存在的条件下使用,否则当无法检索到相关Key时,将会抛出一个Exception信息。

opt(): 这个方法相对比较灵活,当无法获取所指定数值时,将会返回一个默认数值,并不会抛出异常。

 

 

JSONArray:

它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如:[value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为,get()opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。

 

 

同样这个类的value类型可以包括:BooleanJSONArrayJSONObjectNumberString或者默认值JSONObject.NULL object

 

 

JSONStringer:

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

 

根据下边的实例来了解其它相关信息:

string myString = new JSONStringer().object()

.key("AR").value("www.Androidres.com!")

.endObject()

.toString();

结果是一组标准格式的JSON text{AR:www.Androidres.com!}

 

其中的.object().endObject()必须同时使用,是为了按照Object标准给数值添加边界。同样,针对数组也有一组标准的方法来生成边界.array().endArray()

 

JSONTokener:

这个是系统为JSONObjectJSONArray构造器解析JSON source string的类,它可以从source string中提取数值信息。

 

JSONException:

JSON.org类抛出的异常信息。

一个好用的工具JsonViewer

Json的数据格式可读性较差,但是借助这个工具,可以清晰看出它的数据结构。

官方地址 http://jsonviewer.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=5432

软件操作很简单,一张截图,大家就明白了。



 

附上的JsonDemo

先看一下截图

 

 

代码下载

            

其中Jsondemo.zip是演示代码;Jsonview.zip是辅助查看小工具jsonviewer

用来查看豆瓣返回的json格式数据

  • 大小: 33 KB
  • 大小: 20.1 KB
分享到:
评论
5 楼 songshijia88888 2012-03-25  
楼主,你的demo我导到eclipse里面,有乱码啊,把编码设成gbk或才utf-8都不得行……
4 楼 erichris 2011-11-20  
清晰
3 楼 zkh43javaeye 2011-03-21  
楼主给力,代码好,工具也好!
2 楼 xialiwei_518 2010-12-16  
很好 谢谢
1 楼 znnet7 2010-10-21  
多谢楼主~

相关推荐

    基于JSON的Android移动终端与PHP及MySQL数据通信.pdf

    针对Android移动终端与远程WebServer数据通信问题,选择JSON作为数据交互的方法,JSON具有安全、快速、通用、数据通信量小的的特点。对Android与PHP、MySQL数据通信应用进行设计,提供了设计思路和主要方法,结果...

    基于Android的个人理财系统的设计与实现(源码+数据库+文档+截图).zip

    本个人理财软件系统是在Android移动平台的基础上开发,提供了预算...本系统采用Android系统集成的轻量级嵌入式数据库SQLite作为数据库引擎,以实现前后台数据交互。 关键词:个人理财; Android; Java; SQLite; JSON

    Android应用源码基于安卓的百科类通用项目

    本项目是一套基于安卓的茶叶百科项目源码,主要是介绍与茶相关的一些知识,高仿的茶百科官方应用搜索...本项目内数据直接调用http://sns.maimaicha.com/数据,使用json与网站做的交互。有喜欢的朋友可以下载研究一下。

    智能手机系统发展的Android商城

    此设计主要实现了基于Android的电子规则证据助手的应用的开发,该手机软件主要分为客户端和服务端两大部分,客户端主要负责数据的获取和数据的上报,以及对应数据在界面的展示,用户的交互操作,控件的摆放和点击...

    精通ANDROID 3(中文版)1/2

    1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 Android UI  1.5.3 Android基础组件  1.5.4 高级UI概念  1.5.5 Android Service组件  1.5.6 Android媒体和电话组件  1.5.7 ...

    精通Android 3 (中文版)2/2

    1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 Android UI  1.5.3 Android基础组件  1.5.4 高级UI概念  1.5.5 Android Service组件  1.5.6 Android媒体和电话组件  1.5.7 ...

    f15-android-pokedex-api

    是适用于Android的HTTP客户端,可轻松访问基于JSON的API调用的负载,并与大多数现代应用的运行和支持方式进行交互。 要安装改造,只需将这些库包含在app文件夹下的gradle文件中: compile '...

    Highcharts-8.1.2.zip

    Highcharts 是一个用纯 JavaScript 编写的一个图表库, 能够很简单便捷的在 Web 网站或是 Web 应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。 Highcharts 支持的图表类型有直线...

    java消灭星星源码-PopularPeople::mobile_phone:流行的People应用程序,在基于MVVM(ViewModel、Coroutines、Li

    java消灭星星源码 受欢迎的人 :glasses: 受欢迎的人是一个示例 Android ...布局文件生成一个绑定类,并允许您更轻松地编写与视图交互的代码。 - SQLite 对象映射库。 —— DI版 :dagger: - 适用于 Andro

    怪物猎人编码挑战

    MonsterHunterArmory编码挑战 这是初级开发人员的实践编码挑战。 该应用程序具有视频游戏特许经营的Monster Hunter的装甲清单以及显示每个装甲数据的详细信息屏幕。 该应用程序从Web API...该应用程序基于体系结构。

    Epiphany:主显节是一本数字日记,用于记录和整理您的想法和思想。 基于Markdown的笔记应用

    辅助json文件,用于存储其他元数据(如显示顺序) 本地indexdDb数据库,用于缓存和更快地加载注释 带有可扩展树菜单列表的侧边栏(文件夹和机架) 可调整大小的侧边栏 轮廓 内嵌图像预览 快速菜单,带有更改字体...

    JAVA上百实例源码以及开源项目源代码

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    EML企业通讯录管理系统 v2.0

    EML企业客户关系管理系统,是基于Linux开放性内核和Apache基础上Php+Mysql的智能B/S交互式服务系统。 EML系统移动端由移动端采用javascript、html5、ajax、json等技术。 中间件层包括函数库,由java开发,android操作...

    qtdaemon:SolarMax 逆变器的 Qt 守护进程

    信号连接到两个不同的类:一个负责更新用于 Android 应用程序的非常简单的 JSON,另一个有一个内部队列,用于将所有数据保存在一个 FIFO 堆栈中,以及一个将队列“传输”到永久数据库的计时器使用 PostgreSQL 连接...

    JAVA上百实例源码以及开源项目

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    java开源包1

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    EML企业通讯录管理系统v5.4.15 经典版+手机端实时查看人员联系方式+客户关系管理系统

    EML 企业客户关系管理系统,是基于 Linux 开放性内核和 Apache 基础上 Php+Mysql 的智能 B/S 交互式服务系统。 EML 系统移动端由移动端采用 javascript、html5、ajax、json 等技术。 中间件层包括函数库,由 java 开发...

    java开源包11

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包2

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

Global site tag (gtag.js) - Google Analytics