`
z_xiaofei168
  • 浏览: 198037 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浅谈JSON的两种数据结构

    博客分类:
  • JSON
阅读更多

浅谈JSON的两种数据结构

 

JSON主要有两种数据结构:

        1、由key--value对组成的数据结构。这种数据结构在不同的语言中有不同的实现。

        例如:在javascript中是一个对象.而在java中是一种Map结构,c语言中是struct,其它的语言中可能为record hash table 等。 

        2、有序集合、这种数据结构在不同语言中可能有listvertor、数组和序列等实现。

 

下面我就来研究javascript中对这两种方式的语法。

 

1、  用于创建对象的语法

       JSON语法创建对象更像一种Map结构,它是一种由key-value对组成数据结构。

 

   创建Object对象:总是以{开始以}结束,对象的每个属性名与属性值之间用英文的默冒号(:分隔,多个属性之间用英文的(,)隔开:语法格式如下:

     

Student = {
      Name:’z_xiaofei168’
      ……
      Sex:’男'
}

 

 

     Student = { Name:’z_xiaofei168', …… Sex:’男' }  

 

备注:

使用JSON语法创建对象时,属性不仅可是普通的字符,而且可以是任何基本数据类型,还可以是函数,数组,甚至是另外一个用JSON语法创建的对象.

 

比如:

Teacher = {
       Name:’z_xiaofei168',
       Student:{
             Name:’xuedong’,
             Sex:’男'
       }

      //使用JSON为teacher对象分配一个方法
    toString:function(){
      alert(“方法的测试…….”);
      }

}

 

 

2、  用于创建数组的语法

 

JSON创建数组是分常重要的.

 

       JSON创建数组以英文的中括号[开始,然后以中括号]结束.其中放入数组的元素.元素之间用英文的逗号,分开最后的不需要英文逗号。

例如:

 Arr = [value1,value2,value3,………]

 

    通过上面的讲解我理解了JSON创建Javascript对象及数组的方式,那么下面我们就来实现xmlJson之间的转换.

  

 

 

<?xml version="1.0" encoding="UTF-8"?>
<cities>
	<province name="北京">
		<city>昌平</city>
		<city>朝阳</city>
		<city>海淀</city>
	</province>
	
	<province name="河北">
		<city>石家庄ity>
		<city>保定</city>
		<city>张家口</city>
	</province>
</cities>
 

 

转换成JSON

 

cities =[
        province1:{
              name:’河北',
         city[
             ’石家庄','保定',...
      ]
        }
        province2:...
]

 

 

 

9
3
分享到:
评论
4 楼 裴小星 2011-05-12  
flam 写道
key和value都加双引号,是什么意思。


标准JSON的 key 都是要加双引号的,
否则某些 JSON Parser 可能会转失败,
比如 jQuery 1.4 之后,就要求 key 都用双引号包裹。
(实际上jQuery会优先使用浏览器内置的parser,这些parser的要求通常比较严格)

value不一定要加双引号,加双引号表示是 String 类型。


事实上 Object 的 key 最后都是转成 String 的 (自动调用toString),
(因此,很遗憾地,实际上我们实际上没法将一个 Object 作为另一个 Object 的 key)


obj = {};
another = {};

obj[1] = 'somthing';
obj[another] = 'somthing';

for (var key in obj) {
    document.write("type of key: " + typeof key + '<br />');
    document.write("actual value of key: " + key + '<br />');
    document.write('<br />');
}


输出结果:
type of key: string
actual value of key: 1

type of key: string
actual value of key: [object Object]



平时代码中不加双引号只是一种便捷的写法(语法糖)。
3 楼 flam 2011-05-11  
key和value都加双引号,是什么意思。
2 楼 z_xiaofei168 2011-05-10  
abcde5342376 写道
。。。。太少了吧

哥们,会的不多,要不你教我点
1 楼 abcde5342376 2011-05-10  
。。。。太少了吧

相关推荐

Global site tag (gtag.js) - Google Analytics