android json格式解析,android之解析json数据格式详解
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数据格式详解相关推荐
- sql解析json格式字段、sql关联json格式字段,mysql解析json、sql解析json字符串
sql解析json格式字段.sql关联json格式字段,mysql解析json.sql解析json字符串 sql解析字符串 sql关联json中的某个字段 sql解析字符串 表名user_login ...
- oracle中多层嵌套命名,一种多层嵌套的json格式数据的命名解析方法
一种多层嵌套的json格式数据的命名解析方法 [专利摘要]一种n层嵌套的json格式数据的命名解析方法,包括以下步骤:首先,以n层嵌套的json格式数据为基础建立数据源:然后,以键值对为最小单元由外而 ...
- PHP JSON格式的输出和解析
生成JSON格式 <?php header('content-type:application/json'); $number = array('1','2','3','4','5','6',' ...
- android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】
本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...
- 视频格式转换器android,佳佳Android视频格式转换器(Android视频转换软件)V12.0.1.0 免费版...
佳佳Android视频格式转换器(Android视频转换软件)是一款功能强大的Android安卓手机视频格式转换工具.佳佳Android视频格式转换器(Android视频转换软件)可以轻松快捷的将原本 ...
- android怎么把动图变成视频格式,Android 录制手机屏幕视频生成GIF图片实例详解
Android 录制手机屏幕视频生成GIF图片实例详解 无图无真相,在我们日常的网络交流中往往需要给交流对象提供直观的显示,而视频是一个很好的方式,但是视频需要播放器,还需要当做文件进行对点传输,并不 ...
- Android绘图Canvas十八般武器之Shader详解及实战篇(上)
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 前言 Android中绘图离不开的就是Canvas了,Canvas是一个庞大的知识体系,有java层的,也有jni层深入到Frame ...
- Android基础入门教程——8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash
Android基础入门教程--8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash 标签(空格分隔): Android基础入门教程 本节引言: 在Canva ...
- Android异步处理三:Handler+Looper+MessageQueue深入详解
本博文地址:http://blog.csdn.net/mylzc/article/details/6771331 转载请注明出处 Android异步处理系列文章索引 Android异步处理一:使用Th ...
- android setinputtype光标,Android屏蔽软键盘并且显示光标的实例详解
Android屏蔽软键盘并且显示光标的实例详解 如果是android4.0以下,那么 editText.setInputType(InputType.TYPE_NULL); 就够了,android4. ...
最新文章
- 弃用消息队列!这个新一代消息系统,腾讯、华为都用疯了?
- CS中using的使用-以FileStream写入文件为例
- 机器学习导论(张志华):条件期望
- 软件架构师的工作流程
- ASP.NET Core Web程序托管到Windows 服务
- python删除文件夹中的jpg_Python简单删除目录下文件以及文件夹的方法
- 【牛客 - 315F】美丽的项链(线性dp,递推,我为人人)
- c语言枚举常量,浅述C语言中枚举enum的用法
- zabbix agent报错 :cannot connect to [[127.0.0.1]:10051]: [111] Connection refused
- 在哪里学python-深圳学python人工智能培训去哪里
- 0018-大数据售前的中年危机
- Charles Https 请求 SSL乱码问题 charles unreadable
- Html post易语言服务器,POST其实很简单 15 易语言模块之精易模块
- 基于SVPWM的无刷直流电机矢量控制系统研究
- [J2SE]JTree使用DefaultTreeModel,对节点进行增删、拖拽和展开操作,以及跨平台文件拖拽的方法详细介绍
- 在服务端录制语音视频
- (java)跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
- CSS3特效-自定义checkbox样式
- php文件是不是死链,什么是死链?
- 电脑小知识cmd命令大全
热门文章
- html5画布作品,10款面向HTML5 画布(Canvas)的JavaScript库
- 398. 随机数索引
- 小程序调用打电话功能
- fifa足球世界 服务器维护,FIFA足球世界:新手入门全攻略,指尖传控操作让你成为大神!...
- 再见,可恶的桔梗导航!一文搞定chrome浏览器默认打开页面被流氓软件绑定
- 【C语言】学生考勤管理系统
- 利用transform:translate使div居中显示
- Android自定义View之实现流式布局
- NLP判断语言情绪_机器学习中的NLP简介
- 兼莱宝分享:适合上班族空闲时间做的三种靠谱副业?