1.JSON解析

(1).解析Object之一:

解析方法:

1

JSONObject demoJson =newJSONObject(jsonString);

2

String url = demoJson.getString("url");

(2).解析Object之二:

1

{"name":"android","name":"iphone"}

解析方法:

1

JSONObject demoJson =newJSONObject(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 =newJSONObject(jsonString);

2

JSONArray numberList = demoJson.getJSONArray("number");

3

for(int i=0; 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 =newJSONObject(jsonString);

3

JSONArray numberList = demoJson.getJSONArray("number");

4

for(int i=0; i

5

//获取数组中的数组

6

System.out.println(numberList.getJSONArray(i).getInt(0));

7

}

(5).解析Object和Array:

1

{"mobile":[{"name":"android"},{"name":"iphone"}]}

解析方法:

1

JSONObject demoJson =newJSONObject(jsonString);

2

JSONArray numberList = demoJson.getJSONArray("mobile");

3

for(int i=0; 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": {

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.小结

很简单 ,很基础,积水方能成江,累砖才可筑楼。

接下来举两个实际的例子:

;i

JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);

CalendarInfo calendarInfo = new CalendarInfo();

calendarInfo.setCalendar_id(jsonObject2.getString("calendar_id"));

calendarInfo.setTitle(jsonObject2.getString("title"));

calendarInfo.setCategory_name(jsonObject2.getString("category_name"));

calendarInfo.setShowtime(jsonObject2.getString("showtime"));

calendarInfo.setEndtime(jsonObject2.getString("endshowtime"));

calendarInfo.setAllDay(jsonObject2.getBoolean("allDay"));

calendarInfos.add(calendarInfo);

}

总结,普通形式的只需用JSONObject ,带数组形式的需要使用JSONArray 将其变成一个list。

转:http://blog.163.com/tuchengju@126/blog/static/38071165201162254625961/

关注公众号,分享干货,讨论技术

java解析json字符串详解(两种方法)

一.使用JSONObject来解析JSON数据官方提供的,所以不需要导入第三方jar包:直接上代码,如下 private void parseJSONWithJSONObject(String Jso ...

JavaScript如何处理解析JSON数据详解

JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON ...

Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

最强常用开发库总结 - JSON库详解

最强常用开发库总结 - JSON库详解 JSON应用非常广泛,对于Java常用的JSON库要完全掌握.@pdai JSON简介 JSON是什么 JSON 指的是 JavaScript 对象表示法(Ja ...

[Android新手区] SQLite 操作详解--SQL语法

该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

Android Animations 视图动画使用详解!!!

转自:http://www.open-open.com/lib/view/open1335777066015.html Android Animations 视图动画使用详解 一.动画类型 Andro ...

Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

. 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

Angular Npm Package.Json文件详解

Angular7 Npm Package.Json文件详解   近期时间比较充裕,正好想了解下Angular Project相关内容.于是将Npm官网上关于Package.json的官方说明文档进行了 ...

随机推荐

[原创]Linux-day1

原创:转发务必注明出处http://www.cnblogs.com/0zcl/p/6077298.html 一.Linux的基本原则 由目的单一的小程序组成:组合小程序完成复杂任务 一切皆文件 尽量避 ...

SQL防注入程序 v1.0

/// ***************C#版SQL防注入程序 v1.0************ /// *使用方法: /// 一.整站防注入(推荐) /// 在Global.asax.cs中查找App ...

Office 365 for TechNet 版本国家地区没有中国选项

TechNet订阅用户提供一个Office365的注册,今天想测试一下,结果发现TechNet版本的没有中文地区选项 以下是官网E3使用账号注册,有中国地区 以下为TechNet订阅的office36 ...

java_设计模式_命令模式_Command Pattern(2016-08-09)

理解还不到位,先窜出来.等过一阵子再看,再理解. 定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能. 类型:行为类模式 类 ...

UVa 11796 计算几何

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

Android Studio错误

晚上一直在折腾android studio这个东西,弄的蛋疼.. 之前是有用的,然后今天闲的没事干,更新了下,反正弄出了一大堆的错误.. 错误:failed to find Build Tools r ...

JavaScript 实现数组的foreach

Array.prototype.forEach = function (action) { for (var i = 0; i < this.length; i++) { action(this ...

如何在微软Hyper-V下发挥SQL Server最大功效

要建设稳定运行的虚拟化SQL Server系统,关键是确保虚拟化管理软件配置能提供数据库所需的资源.SQL Server是CPU密集型技术,因此支撑它的虚拟机需要能获得充足的处理器资源,同时不能引起与 ...

LeetCode 363:Max Sum of Rectangle No Larger Than K

题目链接 链接:https://leetcode.com/problems/max-sum-of-rectangle-no-larger-than-k/description/ 题解&代码 1 ...

Activiti中子流程:SubProcess,CallActiviti的区别

子流程:SubProcess,CallActiviti的区别 https://community.alfresco.com/thread/221771-call-activiti-vs-subproc ...

android json格式解析,android之解析json数据格式详解相关推荐

  1. sql解析json格式字段、sql关联json格式字段,mysql解析json、sql解析json字符串

    sql解析json格式字段.sql关联json格式字段,mysql解析json.sql解析json字符串 sql解析字符串 sql关联json中的某个字段 sql解析字符串 表名user_login ...

  2. oracle中多层嵌套命名,一种多层嵌套的json格式数据的命名解析方法

    一种多层嵌套的json格式数据的命名解析方法 [专利摘要]一种n层嵌套的json格式数据的命名解析方法,包括以下步骤:首先,以n层嵌套的json格式数据为基础建立数据源:然后,以键值对为最小单元由外而 ...

  3. PHP JSON格式的输出和解析

    生成JSON格式 <?php header('content-type:application/json'); $number = array('1','2','3','4','5','6',' ...

  4. android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】

    本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...

  5. 视频格式转换器android,佳佳Android视频格式转换器(Android视频转换软件)V12.0.1.0 免费版...

    佳佳Android视频格式转换器(Android视频转换软件)是一款功能强大的Android安卓手机视频格式转换工具.佳佳Android视频格式转换器(Android视频转换软件)可以轻松快捷的将原本 ...

  6. android怎么把动图变成视频格式,Android 录制手机屏幕视频生成GIF图片实例详解

    Android 录制手机屏幕视频生成GIF图片实例详解 无图无真相,在我们日常的网络交流中往往需要给交流对象提供直观的显示,而视频是一个很好的方式,但是视频需要播放器,还需要当做文件进行对点传输,并不 ...

  7. Android绘图Canvas十八般武器之Shader详解及实战篇(上)

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 前言 Android中绘图离不开的就是Canvas了,Canvas是一个庞大的知识体系,有java层的,也有jni层深入到Frame ...

  8. Android基础入门教程——8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash

    Android基础入门教程--8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash 标签(空格分隔): Android基础入门教程 本节引言: 在Canva ...

  9. Android异步处理三:Handler+Looper+MessageQueue深入详解

    本博文地址:http://blog.csdn.net/mylzc/article/details/6771331 转载请注明出处 Android异步处理系列文章索引 Android异步处理一:使用Th ...

  10. android setinputtype光标,Android屏蔽软键盘并且显示光标的实例详解

    Android屏蔽软键盘并且显示光标的实例详解 如果是android4.0以下,那么 editText.setInputType(InputType.TYPE_NULL); 就够了,android4. ...

最新文章

  1. 弃用消息队列!这个新一代消息系统,腾讯、华为都用疯了?
  2. CS中using的使用-以FileStream写入文件为例
  3. 机器学习导论(张志华):条件期望
  4. 软件架构师的工作流程
  5. ASP.NET Core Web程序托管到Windows 服务
  6. python删除文件夹中的jpg_Python简单删除目录下文件以及文件夹的方法
  7. 【牛客 - 315F】美丽的项链(线性dp,递推,我为人人)
  8. c语言枚举常量,浅述C语言中枚举enum的用法
  9. zabbix agent报错 :cannot connect to [[127.0.0.1]:10051]: [111] Connection refused
  10. 在哪里学python-深圳学python人工智能培训去哪里
  11. 0018-大数据售前的中年危机
  12. Charles Https 请求 SSL乱码问题 charles unreadable
  13. Html post易语言服务器,POST其实很简单 15 易语言模块之精易模块
  14. 基于SVPWM的无刷直流电机矢量控制系统研究
  15. [J2SE]JTree使用DefaultTreeModel,对节点进行增删、拖拽和展开操作,以及跨平台文件拖拽的方法详细介绍
  16. 在服务端录制语音视频
  17. (java)跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
  18. CSS3特效-自定义checkbox样式
  19. php文件是不是死链,什么是死链?
  20. 电脑小知识cmd命令大全

热门文章

  1. html5画布作品,10款面向HTML5 画布(Canvas)的JavaScript库
  2. 398. 随机数索引
  3. 小程序调用打电话功能
  4. fifa足球世界 服务器维护,FIFA足球世界:新手入门全攻略,指尖传控操作让你成为大神!...
  5. 再见,可恶的桔梗导航!一文搞定chrome浏览器默认打开页面被流氓软件绑定
  6. 【C语言】学生考勤管理系统
  7. 利用transform:translate使div居中显示
  8. Android自定义View之实现流式布局
  9. NLP判断语言情绪_机器学习中的NLP简介
  10. 兼莱宝分享:适合上班族空闲时间做的三种靠谱副业?