`
朱嘉华
  • 浏览: 236228 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Android学习系列(20)-App数据格式之解析Json

 
阅读更多

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)、truefalse 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.小结
      很简单 ,很基础,积水方能成江,累砖才可筑楼。  

分享到:
评论

相关推荐

    parse-android-test-app,为解析测试服务器测试android应用程序。服务器:.zip

    通过学习和使用"parse-android-test-app",开发者可以提升他们对服务器数据解析的理解,掌握最佳实践,避免常见的解析错误,并且提高应用程序的稳定性和性能。此外,开源的特性使得开发者可以自由地调整和扩展项目,...

    基于Android及JSON的天气预报APP设计与实现.pdf

    例如,使用JSON格式来获取天气预报信息,使用Gson库来解析JSON数据等。 三、天气预报APP的设计与实现 天气预报APP的设计与实现需要考虑到用户需求和Android平台的特点。例如,天气预报APP需要实现城市定位、天气...

    Android应用源码之Android 解析json_dome-IT计算机-毕业设计.zip

    在Android应用开发中,解析JSON是一项非常重要的技能,特别是在构建移动App时,因为网络数据传输通常采用JSON格式。本项目“Android应用源码之Android 解析json_dome”旨在为学习者提供一个实际的Android应用示例,...

    android-app-master 源代码

    【Android App Master 源代码】是一个开源项目,旨在提供Android应用开发的示例和学习资源。这个项目可能包含了各种Android应用开发的关键组件和技术,帮助开发者深入理解Android平台的工作原理和最佳实践。以下是对...

    android oschina-android-app源码.rar

    这个压缩包文件"android oschina-android-app源码.rar"包含的是OSChina Android应用的源代码,OSChina是中国知名的开源技术社区,其官方Android应用集成了最新的开源技术和资讯,是学习Android开发的一个宝贵资源。...

    Android代码-oschina--app开源中国.zip

    【Android代码-oschina--app开源中国.zip】是一个包含开源中国APP源码的压缩包,它提供了深入理解Android应用开发的机会,特别是对于想要学习或研究开源中国Android客户端实现的开发者来说非常有价值。开源中国是一...

    基于android解析json数据天气app

    以上是基于Android解析JSON数据天气APP的主要技术点,通过熟练掌握这些知识,可以构建出一款功能完备、用户体验良好的天气应用。在实际开发中,还要注意代码规范、性能优化以及遵循Android的最佳实践。

    uni-app 自定义底部导航栏uni-app-bottom-navigation-master.zip

    uni-app是一个多端开发框架,允许开发者使用一套代码生成包括iOS、Android、H5、微信小程序等多个平台的应用。这个项目可能是为了提供更加灵活和个性化的底部导航栏设计方案,以满足不同应用的需求。 【描述解析】 ...

    uniapp选择所有城市通过索引方式(源码自带所有城市json格式数据)

    开发者可以将这些数据导入到uniapp应用中,通过遍历和解析JSON对象来生成可交互的城市列表。在用户选择城市时,应用可以监听事件,根据用户选择的索引或城市名来更新相应的数据。 在uniapp-choose-city-master这个...

    安卓Android源码——oschina-android-app(开源中国).zip

    4. **网络通信**:学习如何使用OkHttp、Retrofit或Volley等库进行网络请求,处理JSON数据,实现API调用。 5. **异步处理**:理解如何使用AsyncTask、IntentService、LiveData、Room库或协程来处理后台任务,防止...

    解析json进行动画展示

    本主题将深入探讨如何通过解析JSON来实现动画展示,主要以"Lottie"库为例,该库在Android开发中被广泛用于加载和播放JSON格式的动画。 Lottie是由Airbnb开发的一个开源库,它允许开发者将After Effects设计的动画...

    uin-app仿瑞幸咖啡app5个初始页面

    uni.app是DCloud(原HBuilderX)推出的一款跨端开发框架,它允许开发者编写一次代码,就能在iOS、Android、Web(H5)、微信小程序、支付宝小程序等多个平台上运行。 1. **uni.app框架详解**:uni.app是DCloud的uni-...

    使用Gson解析json数据

    本教程将重点介绍如何使用Gson库在Java环境中解析JSON数据。 Gson是Google提供的一款开源库,它能够将Java对象转换为对应的JSON字符串,也可以将JSON数据反序列化为Java对象。这对于处理JSON数据非常方便。在本示例...

    Android源码——oschina-android-app(开源中国).zip

    6. **网络请求**:可能会使用OkHttp或Volley进行网络请求,获取和发送数据,同时可能结合Gson或Jackson进行JSON数据解析。 7. **权限管理**:在Android系统中,6.0及以上版本引入了运行时权限,源码中应有相应的...

    android app与服务器json交互

    在Android应用开发中,与服务器进行数据交互是一个关键环节,而JSON作为一种轻量级的数据交换格式,被广泛用于客户端和服务器之间的通信。本篇将详细阐述Android App如何使用JSON与服务器进行交互,以及相关的实现...

    Android例子源码httpclient获取到JSON数据并展示到ListView

    在Android开发中,将HTTP请求与JSON...通过这个例子,开发者可以学习到如何在Android中实现网络请求、解析JSON数据以及在ListView中展示这些数据,这对于开发涉及网络交互的Android应用来说是非常基础且重要的技能。

    Android应用源码---答题(考试)app.zip

    【Android应用源码---答题(考试)app.zip】是一个包含Android应用源代码的压缩包,适合开发者学习和参考。这个应用可能是一个实现在线答题或考试功能的软件,它可以帮助我们理解如何在Android平台上构建类似的系统...

    Android-爱上美食基于RetrofitGlideGson的食谱APP

    在“爱上美食”APP中,Gson将服务器返回的JSON数据转化为Java对象,方便开发者进行数据解析和存储,如将食谱信息转换为模型类,便于展示在UI上。 4. Android开发基础:除了上述核心技术,项目还涉及到了Android开发...

Global site tag (gtag.js) - Google Analytics