JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
——JSON官网:http://www.json.org/json-zh.html
一.定义
JSON建构于两种结构:
- 列表内容“名称/值”对的集合(A collection of name/value pairs)。
不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 - 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
- 对象模式: {“name”: “xiaoluo”} , 这就是一个最简单的json对象,对于这种数据格式,key值必须要是string类型,而对于value,则可以是string、number、object、array等数据类型
- 数组模式:这种形式被称为是jsonArray,数组是值(value)的有序集合。一个数组以“[”开始,“]”结束。值之间使用“,”(逗号)分隔。
二.解析JSON数据
Android提供的Json解析类:
- JSONObject: Json对象,可以完成Json字符串与Java对象的相互转换
- JSONArray: Json数组,可以完成Json字符串与Java集合或对象的相互转换
- JSONStringer:Json文本构建类,这个类可以帮助快速和便捷的创建JSON text, 每个JSONStringer实体只能对应创建一个JSON text
- JSONException:Json异常
JSONObject简单使用示例:
infoMap = new HashMap<String, Object>(); try { JSONObject root = new JSONObject(stringBuilder.toString()); Iterator actions = root.keys(); //key()方法返回一个key的迭代器(String类型) while (actions.hasNext()) { String param = actions.next().toString(); Object value = root.get(param); infoMap.put(param, value); } } catch (JSONException e) { e.printStackTrace(); }
执行以上代码就将JSON中的 ”键值“ 输送到HashMap中。