- 浏览: 238268 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xchd:
分别在什么时候(情况下)用ThreadFactory、Exec ...
Executor线程池实例 -
mikey_5:
是不是没有写完啊
Executor线程池实例 -
xinyao:
楼主,你好,请问能给我发个源码吗,我要在一个页面能实时看到下载 ...
Android学习系列(19)--App离线下载 -
sdtzkj:
...
jasperReport 帮助文档 api -
shero_ys:
public class VrowsePicActivity ...
android handler 实现三步曲
JSON数据格式,在Android中被广泛运用于客户端和网络(或者说服务器)通信,非常有必要系统的了解学习。
恰逢本人最近对json做了一个简单的学习,特此总结一下,以飨各位。
为了文章简明清晰,尽量多列点,少废话。
参考文档:http://www.ietf.org/rfc/rfc4627.txt?number=4627
1.JSON解析
(1).解析Object之一:
解析方法:
1 |
JSONObject demoJson = new JSONObject(jsonString);
|
2 |
String url = demoJson.getString( "url" );
|
(2).解析Object之二:
1 |
{ "name" : "android" , "name" : "iphone" }
|
解析方法:
1 |
JSONObject demoJson = new JSONObject(jsonString);
|
2 |
String name = demoJson.getString( "name" );
|
3 |
String version = demoJson.getString( "version" );
|
4 |
System.out.println( "name:" +name+ ",version:" +version);
|
(3).解析Array之一:
1 |
{ "number" :[1,2,3]}
|
解析方法:
1 |
JSONObject demoJson = new JSONObject(jsonString);
|
2 |
JSONArray numberList = demoJson.getJSONArray( "number" );
|
3 |
for (int i=0; i<numberList.length(); i++){
|
4 |
//因为数组中的类型为int,所以为getInt,其他getString,getLong同用
|
5 |
System.out.println(numberList.getInt(i));
|
6 |
} |
(4).解析Array之二:
1 |
{ "number" :[[1],[2],[3]]}
|
解析方法:
1 |
//嵌套数组遍历 |
2 |
JSONObject demoJson = new JSONObject(jsonString);
|
3 |
JSONArray numberList = demoJson.getJSONArray( "number" );
|
4 |
for ( int i= 0 ; i<numberList.length(); i++){
|
5 |
//获取数组中的数组
|
6 |
System.out.println(numberList.getJSONArray(i).getInt( 0 ));
|
7 |
} |
(5).解析Object和Array:
1 |
{ "mobile" :[{ "name" : "android" },{ "name" : "iphone" }]}
|
解析方法:
1 |
JSONObject demoJson = new JSONObject(jsonString);
|
2 |
JSONArray numberList = demoJson.getJSONArray( "mobile" );
|
3 |
for ( int i= 0 ; i<numberList.length(); i++){
|
4 |
System.out.println(numberList.getJSONObject(i).getString( "name" ));
|
5 |
} |
所以,我们发现get后面接着的是你想要的得到的结果的类型:getType,这个对理解很有帮助。
(6).使用optType:
上面的例子,使用getType在碰到查找不到节点的时候,会抛出异常。
如果使用optType,找不到节点,则返回null或者默认值。
1 |
//无url节点,抛出异常 |
2 |
String url = demoJson.getString( "url" );
|
3 |
//无url节点,返回空,如果为基本类型,则返回默认值 |
4 |
String url = demoJson.optString( "url" );
|
(7).UTF-8的BOM头导致解析JSON异常的问题
到json文件保存为utf-8的时候,在windows平台下,会产生bom头"EF BB EF"字节在文本的最前面(需要用十六进制工具打开才能看的到)。
有两种解决方法:
a.使用UltraEdit打开json文件, 另存为的时候,选择格式UTF-8,无BOM头,如果还不行,在用记事本打开,另存为UTF-8下,多试几次就可以了。
b.使用代码处理,截取json主体内容:
1 |
String jsonString = getJsonString(); |
2 |
jsonString = jsonString.substring(jsonString.indexOf( "{" ),jsonString.lastIndexOf( "}" )+ 1 );
|
2.JSON必知
(1).JSON是一种轻量级的数据交换格式
(2).JSON基于两种数据结构:Object和Array。其中Object是“名称/值”对的集合。
(3).对象:大括号,每一组string-value结合以","分隔,string和value以冒号分隔。
(4).数组:
(5).string由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。
(6).value可以是双引号括起来的字符串(string)、数值(number)、true
、false
、 null
、对象(object)或者数组(array)。这些结构可以嵌套。
(7).空白可以加入到任何符号之间,包括空格,tab,回车,换行等。
(8).举例:
a.Object实例:
01 |
{ |
02 |
"Image" : {
|
03 |
"Width" : 800,
|
04 |
"Height" : 600,
|
05 |
"Title" : "View from 15th Floor" ,
|
06 |
"Thumbnail" : {
|
07 |
"Url" : "http://www.example.com/image/481989943" ,
|
08 |
"Height" : 125,
|
09 |
"Width" : "100"
|
10 |
},
|
11 |
"IDs" : [116, 943, 234, 38793]
|
12 |
}
|
13 |
} |
b.Array实例:
01 |
[ |
02 |
{
|
03 |
"precision" : "zip" ,
|
04 |
"Latitude" : 37.7668,
|
05 |
"Longitude" : -122.3959,
|
06 |
"Address" : "" ,
|
07 |
"City" : "SAN FRANCISCO" ,
|
08 |
"State" : "CA" ,
|
09 |
"Zip" : "94107" ,
|
10 |
"Country" : "US"
|
11 |
},
|
12 |
{
|
13 |
"precision" : "zip" ,
|
14 |
"Latitude" : 37.371991,
|
15 |
"Longitude" : -122.026020,
|
16 |
"Address" : "" ,
|
17 |
"City" : "SUNNYVALE" ,
|
18 |
"State" : "CA" ,
|
19 |
"Zip" : "94085" ,
|
20 |
"Country" : "US"
|
21 |
}
|
22 |
] |
3.小结
很简单 ,很基础,积水方能成江,累砖才可筑楼。
发表评论
-
Android学习系列(19)--App离线下载
2011-08-13 11:40 1402Android学习系列(19)--App离线下载 ... -
Android学习系列(1)--为App签名(为apk签名)
2011-08-13 11:20 1679写博客是一种快乐,前提是你有所写,与人分享,是另一种快乐, ... -
Android学习系列(4)--App自适应draw9patch不失真背景
2011-08-13 11:16 2210做人要大度,海纳百川,做事要圆滑,左右逢源,这让我想到了编程也 ... -
Android自定义View之一:初探实例 .
2011-08-13 11:09 1485Android自定义View实现很简单 继承View,重写构 ... -
Android多媒体学:播放网络上的视频 .
2011-08-13 11:05 2068Android支持播放网络上的视频。在播放网络上的视频时,牵涉 ... -
Android多媒体学:利用AudioRecord类实现自己的音频录制程序 .
2011-08-13 11:02 5875AudioRecord类相对于MediaRecorder来说, ... -
Android多媒体:实现图像的编辑和合成 .
2011-08-13 10:59 2165package demo.camera; import ja ... -
自动完成框
2011-05-03 13:44 741请下载源码 -
读取sd卡照片
2011-05-03 13:43 1306请下载源码 -
UC菜单栏布局
2011-05-03 13:41 1123请下载附件 -
Executor线程池实例
2011-04-06 17:42 6678Executor 是 java5 下的一个 ... -
android handler 实现三步曲
2011-04-06 16:59 1434一. 要实现接口: public class VrowseP ... -
android 横竖屏切换
2011-03-25 14:33 1934①不理会。。②只竖屏 ... -
android 分辨率调试
2011-03-25 13:36 1867一:不同的layout Android ... -
android 图片内存溢出
2011-03-21 18:24 3086我的代码如下 is = new FileI ... -
android Exid 不可修改
2011-03-21 13:47 1259Android:只读EditText内容可滚动(禁止输入法)的 ... -
android 对话提示框大全
2011-03-21 12:34 3190Android 对话框(Dialog)大全 建立你自己的对话框 ... -
Android消息提示框和对话框
2011-03-21 12:29 1362在某些情况下需要向用户弹出提示消息,如显示错误信息,收到短消息 ... -
android tab 用法
2011-03-11 15:10 1751TabHost广泛运用于android程序中,在程序中运用Ta ... -
Android Intent 用法汇总
2011-03-08 18:17 1122显示网页 1. Uri uri = Uri.parse( ...
相关推荐
通过学习和使用"parse-android-test-app",开发者可以提升他们对服务器数据解析的理解,掌握最佳实践,避免常见的解析错误,并且提高应用程序的稳定性和性能。此外,开源的特性使得开发者可以自由地调整和扩展项目,...
例如,使用JSON格式来获取天气预报信息,使用Gson库来解析JSON数据等。 三、天气预报APP的设计与实现 天气预报APP的设计与实现需要考虑到用户需求和Android平台的特点。例如,天气预报APP需要实现城市定位、天气...
在Android应用开发中,解析JSON是一项非常重要的技能,特别是在构建移动App时,因为网络数据传输通常采用JSON格式。本项目“Android应用源码之Android 解析json_dome”旨在为学习者提供一个实际的Android应用示例,...
【Android App Master 源代码】是一个开源项目,旨在提供Android应用开发的示例和学习资源。这个项目可能包含了各种Android应用开发的关键组件和技术,帮助开发者深入理解Android平台的工作原理和最佳实践。以下是对...
这个压缩包文件"android oschina-android-app源码.rar"包含的是OSChina Android应用的源代码,OSChina是中国知名的开源技术社区,其官方Android应用集成了最新的开源技术和资讯,是学习Android开发的一个宝贵资源。...
uni-app是一个多端开发框架,允许开发者使用一套代码生成包括iOS、Android、H5、微信小程序等多个平台的应用。这个项目可能是为了提供更加灵活和个性化的底部导航栏设计方案,以满足不同应用的需求。 【描述解析】 ...
【Android代码-oschina--app开源中国.zip】是一个包含开源中国APP源码的压缩包,它提供了深入理解Android应用开发的机会,特别是对于想要学习或研究开源中国Android客户端实现的开发者来说非常有价值。开源中国是一...
以上是基于Android解析JSON数据天气APP的主要技术点,通过熟练掌握这些知识,可以构建出一款功能完备、用户体验良好的天气应用。在实际开发中,还要注意代码规范、性能优化以及遵循Android的最佳实践。
开发者可以将这些数据导入到uniapp应用中,通过遍历和解析JSON对象来生成可交互的城市列表。在用户选择城市时,应用可以监听事件,根据用户选择的索引或城市名来更新相应的数据。 在uniapp-choose-city-master这个...
4. **网络通信**:学习如何使用OkHttp、Retrofit或Volley等库进行网络请求,处理JSON数据,实现API调用。 5. **异步处理**:理解如何使用AsyncTask、IntentService、LiveData、Room库或协程来处理后台任务,防止...
本主题将深入探讨如何通过解析JSON来实现动画展示,主要以"Lottie"库为例,该库在Android开发中被广泛用于加载和播放JSON格式的动画。 Lottie是由Airbnb开发的一个开源库,它允许开发者将After Effects设计的动画...
uni.app是DCloud(原HBuilderX)推出的一款跨端开发框架,它允许开发者编写一次代码,就能在iOS、Android、Web(H5)、微信小程序、支付宝小程序等多个平台上运行。 1. **uni.app框架详解**:uni.app是DCloud的uni-...
本教程将重点介绍如何使用Gson库在Java环境中解析JSON数据。 Gson是Google提供的一款开源库,它能够将Java对象转换为对应的JSON字符串,也可以将JSON数据反序列化为Java对象。这对于处理JSON数据非常方便。在本示例...
6. **网络请求**:可能会使用OkHttp或Volley进行网络请求,获取和发送数据,同时可能结合Gson或Jackson进行JSON数据解析。 7. **权限管理**:在Android系统中,6.0及以上版本引入了运行时权限,源码中应有相应的...
在Android应用开发中,与服务器进行数据交互是一个关键环节,而JSON作为一种轻量级的数据交换格式,被广泛用于客户端和服务器之间的通信。本篇将详细阐述Android App如何使用JSON与服务器进行交互,以及相关的实现...
在Android开发中,将HTTP请求与JSON...通过这个例子,开发者可以学习到如何在Android中实现网络请求、解析JSON数据以及在ListView中展示这些数据,这对于开发涉及网络交互的Android应用来说是非常基础且重要的技能。
【Android应用源码---答题(考试)app.zip】是一个包含Android应用源代码的压缩包,适合开发者学习和参考。这个应用可能是一个实现在线答题或考试功能的软件,它可以帮助我们理解如何在Android平台上构建类似的系统...
在“爱上美食”APP中,Gson将服务器返回的JSON数据转化为Java对象,方便开发者进行数据解析和存储,如将食谱信息转换为模型类,便于展示在UI上。 4. Android开发基础:除了上述核心技术,项目还涉及到了Android开发...