因为在之前的项目中,xml和json数据格式都有使用过,所以对json格式的简单、高效的特点印象深刻。如果使用json语言进行开发,强烈推荐使用json数据格式!
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:
(1)“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
(2)值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
因为这种数据结构在大部分现代计算机语言都以某种形式存在。所以使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。比如给android和ios写api接口的时候,采用json格式就可以实现跨平台支持。
1.键值对形式:
这种方式我们可以对应java里的map结构。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
下面是一个键值对形式的简单示例:
{
"name": "zhao",
"age": 22,
"address": "QingDao"
}
前面的键是String字符串,但是后面的值却可以是多种类型,比如字符串、bool、数值、null、对象甚至是数组。
下面是一个值是对象的简单示例:
{
"name": "zhao",
"age": 22,
"address": "QingDao",
"birthday": {
"year": 19,
"month": 1,
"day": 19
}
}
我们可以使用下面的图表示这种形式
2.数组形式
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
对应于java里面的类,我们可以认为这是一个可以放object的数组,值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
下面是一个使用数组形式的示例:
[
"zhaokaiqiang",
22,
"QingDao",
{
"year": 1992,
"month": 1,
"day": 19
},
true,
null
]
我们可以使用下面的这个图表示这种形式
value的取值可以使用下面的图片表示
如果在字符串里面有需要转义的字符的话,可以参考下面的关于转义的说明
Json数据格式就这么点东西,非常的简单明了。Android里面自带的org.json包里面的类,可以生成Json格式的数据或者是对Json格式的数据进行解析。
下面简单的介绍一下Android里面的json相关类的使用,但是强烈不推荐大家使用android自带的json相关类!
和json相关的类就下面5个,下面分别介绍这几个类的用法
1.JSONObject
这个类主要对json键值对形式的数据操作进行了封装,下面是常用的几个方法:
JSONObject.put(key,values);//添加,用于生成json
JSONObject.get(key);//获取,用于解析json
JSONObject.optXXX(key);//也是用于获取,在解析的时候会用到,但是不会抛出异常,而是返回默认的值
如果我们要生成键值对形式的字符串,那么可以使用这个类,就像下面的代码