xml与json的对比
2013-11-03 09:19
169 查看
xml的格式如何,这里无须多言。简单介绍一下json的语法规则。
首先,推荐去http://www.json.org/查看json的语法规则。
简单的说一下,json遵循键值的法则存放数据,键必须为字符串,而值可以为字符串,数字,布尔型的值,对象和数组。
键和值中间用冒号分离,键值对之间用逗号隔开。
比如
{
"name" : "小三",
"age" : 20
}表示一个对象。
或者
["abc","def"]表示一个数组。
一般来说,一对{ }表示一个NSDictionary对象,一对[]表示一个NSArray数组。
以上的
{
"name" : "小三",
"age" : 20
}
这个可以转换成一个NSDictionary对象,这个对象有2个键,一个是name,一个是age,我们可以用objectForKey取相应的值。
["abc","def"]
这个可以转成一个NSArray数组,用objectForKey取值。
http://jsonlint.com/
上面这个网站可以帮你检测你的json字符串构建是否符合语法规则,保证不会漏括号之类的。
举个例子。有个xml
<?xml version="1.0" encoding="UTF-8"?>
<result>
<meeting addr="203">
<creator>张一</creator>
<member>
<name>张二</name>
<age>20</age>
</member>
<member>
<name>张三</name>
<age>21</age>
</member>
<member>
<name>张四</name>
<age>22</age>
</member>
</meeting>
<meeting addr="204">
<creator>李一</creator>
<member>
<name>李二</name>
<age>20</age>
</member>
<member>
<name>李三</name>
<age>21</age>
</member>
<member>
<name>李四</name>
<age>22</age>
</member>
</meeting>
</result>
转成对应的json为
{
"result": [
{
"meeting": {
"addr": "203",
"creator": "张一",
"member": [
{
"name":"张二",
"age":"20"
},
{
"name":"张三",
"age":"21"
},
{
"name":"张四",
"age":"22"
}
]
}
},
{
"meeting": {
"addr": "204",
"creator": "张二",
"member": [
{
"name":"张二",
"age":"20"
},
{
"name":"张三",
"age":"21"
},
{
"name":"张四",
"age":"22"
}
]
}
}
]
}
下面说说ios对两种格式的解析把。
对以上xml解析,假设已有一个nsstring或者nsdata存放要解析的xml字符串。
一般来说先构建一个或者多个model模型,用来存放各种属性。
然后实现parser的三个委托方法,,在委托方法里创建model,再存放在本地的一个array里。
而对以上json解析,json的框架为nsstring增加了一个JSONValue方法,对一个存放要解析的json文本的字符串str,直接调用[str JSONValue]就能获得对应的NSDictionary对象,然后不停调用objectForKey的方法取得相应的值。相比xml,json确实比较方便,以后可以试试看。
首先,推荐去http://www.json.org/查看json的语法规则。
简单的说一下,json遵循键值的法则存放数据,键必须为字符串,而值可以为字符串,数字,布尔型的值,对象和数组。
键和值中间用冒号分离,键值对之间用逗号隔开。
比如
{
"name" : "小三",
"age" : 20
}表示一个对象。
或者
["abc","def"]表示一个数组。
一般来说,一对{ }表示一个NSDictionary对象,一对[]表示一个NSArray数组。
以上的
{
"name" : "小三",
"age" : 20
}
这个可以转换成一个NSDictionary对象,这个对象有2个键,一个是name,一个是age,我们可以用objectForKey取相应的值。
["abc","def"]
这个可以转成一个NSArray数组,用objectForKey取值。
http://jsonlint.com/
上面这个网站可以帮你检测你的json字符串构建是否符合语法规则,保证不会漏括号之类的。
举个例子。有个xml
<?xml version="1.0" encoding="UTF-8"?>
<result>
<meeting addr="203">
<creator>张一</creator>
<member>
<name>张二</name>
<age>20</age>
</member>
<member>
<name>张三</name>
<age>21</age>
</member>
<member>
<name>张四</name>
<age>22</age>
</member>
</meeting>
<meeting addr="204">
<creator>李一</creator>
<member>
<name>李二</name>
<age>20</age>
</member>
<member>
<name>李三</name>
<age>21</age>
</member>
<member>
<name>李四</name>
<age>22</age>
</member>
</meeting>
</result>
转成对应的json为
{
"result": [
{
"meeting": {
"addr": "203",
"creator": "张一",
"member": [
{
"name":"张二",
"age":"20"
},
{
"name":"张三",
"age":"21"
},
{
"name":"张四",
"age":"22"
}
]
}
},
{
"meeting": {
"addr": "204",
"creator": "张二",
"member": [
{
"name":"张二",
"age":"20"
},
{
"name":"张三",
"age":"21"
},
{
"name":"张四",
"age":"22"
}
]
}
}
]
}
下面说说ios对两种格式的解析把。
对以上xml解析,假设已有一个nsstring或者nsdata存放要解析的xml字符串。
一般来说先构建一个或者多个model模型,用来存放各种属性。
然后实现parser的三个委托方法,,在委托方法里创建model,再存放在本地的一个array里。
而对以上json解析,json的框架为nsstring增加了一个JSONValue方法,对一个存放要解析的json文本的字符串str,直接调用[str JSONValue]就能获得对应的NSDictionary对象,然后不停调用objectForKey的方法取得相应的值。相比xml,json确实比较方便,以后可以试试看。
相关文章推荐
- XML跟Json的一些对比
- XML与JSON的对比
- android中json、sax、dom解析xml对比
- protobuf,json,xml,binary,Thrift之间的对比
- 数据交换格式XML和JSON对比
- Thrift,protobuf,json,xml,binary之间的对比
- XML与JSON的对比
- xml学习篇(二) ----JSON 和XML对比
- XML和JSON数据格式对比
- JSON与XML优缺点对比分析
- XML与JSON的对比
- XML与JSON的对比
- Android Json 数据解析 II 之 ------xml ,json 两种数据格式之对比
- xml和json格式文件简单对比
- 数据交换格式XML和JSON对比
- Json 介绍 以及与XML 对比
- xml学习篇(二) ----JSON 和XML对比
- android中的Json与xml解析对比分析
- XML与JSON的对比
- 对比分析json及XML