一、JSON数据简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式, 易于人阅读和编写,同时也易于机器解析和生成。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。 JSON只包含有限几种基础对象,用于表示来自服务器的模型对象,例如数组、字典、字符串和数字。数组可能包含多个字符串、数字、字典或其他数组;而字典则可能包含多个键-值对,其中键是字符串,而值可能是字符串、数字、数组或其他字典。每个JSON文件都是由这些基础对象嵌套组合而成的。这些特性使JSON成为理想的数据交换语言。
JSON有两种表示结构,对象和数组:
<1>对象结构以“ { ”大括号开始,以" } "大括号结束。示例如下:
{
"name" : "Gary",
"age" : "22",
"hobbies" : ["football","dota"],
"address" : {
"country" : "China",
"city" : "Beijing"
}
}
<2>数组结构以" [ "开始以" ] "结束。示例如下:
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
二、字符串、json字符串、json对象
<1>字符串:这个很好解释,指使用“”双引号或’’单引号包括的字符。例如:var comStr = ‘this is string’;
<2>json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = “{ID:’100’,Name:’gary’}”;
<3>json对象:指符合json格式要求的js对象。例如:var jsonObj = { ID: “100”, Name: “gary” };
三、在JS下使用JSON
JSON是JS的一个子集,所以可以在JS中轻松地读,写JSON。读和写JSON都有两种方法,分别是利用”.”操作符和“[key]”的方式。
我们首先定义一个JSON对象,代码如下。
var obj = {
1: "value1",
"2": "value2",
count: 3,
person: [ //数组结构JSON对象,可以嵌套使用
{
id: 1,
name: "张三"
},
{
id: 2,
name: "李四"
}
],
object: { //对象结构JSON对象
id: 1,
msg: "对象里的对象"
}
};
<1>从json中读数据
function ReadJSON() {
alert(obj.1); //会报语法错误,可以用alert(obj["1"]);说明数字最好不要做关键字
alert(obj.2); //同上
alert(obj.person[0].name); //或者alert(obj.person[0]["name"])
alert(obj.object.msg); //或者alert(obj.object["msg"])
}
<2>向JSON中写数据
function Add() {
//往JSON对象中增加了一条记录
obj.sex= "男" //或者obj["sex"]="男"
}
<3>修改JSON中的数据
function Update() {
obj.count = 10; //或obj["count"]=10
}
<4>删除JSON中的数据
function Delete() {
delete obj.count;
}
<5>遍历JSON中的数据
function Traversal() {
for (var c in obj) {
console.log(c + ":", obj[c]);
}
}
四、在iOS中解析JSON数据
Apple提供了专门用于解析JSON数据的类:NSJSONSerialLization。
NSJSONSerialLization可以讲JSON数据中的对象转换为对应的Objective-C对象——字典转换为NSDictionary对象;数组转换为NSArray对象;字符串转换为NSString对象;数字转换为NSNumber对象。