看下面这个例子:
<script type="text/javascript"> function set() { var outer = {}; //outer.a = 10; outer[b] = 20; var apps = ["key1", "key2"]; for(var i=0; i<apps.length; i++) { var appId = apps[i]; var a = (i+1)*10; var b = (i+1)*12; var perAppData = {"a":a, "b":b}; outer[appId] = perAppData; //var c = {}; //c[appId] = perAppData; //outer[appId] = perAppData; //outer = $.extend(outer, c); //outer.appId = perAppData; } var t = outer; alert(t.key1); alert(t['key2']); } </script>
这个例子模拟的是我今儿下午遇到的一个情况:json的嵌套!
具体情形是:有一个外层的json, 他的key是字符串 value又是一个具体的(内层)json。我需要通过循环形成这个大的(外层)json。key是变量加进去的~
这个大的json的结构对应于后台java数据结构就是Map<String, Map<String, String>>了…………
之前只知道在js中取json的值有2种方式 :第一种是用中括号json[key] 第二种是用点json.key都行,对应的也有赋值。json[key] = jsonValue和json.key = jsonValue 但只是很笼统的认知~~~~
比如上述例子模拟的情况,key是appId变量来赋值的。如果你用json.appId是不行的,你将会得到{"appId" : jsonValue}而不是理想的结果。因为此时你用json.appId时,appId会被当成一个字符串文本而不是把它当成一个变量取他对应的值,json.[appId]则是把appId当成一个变量, json.[appId]则是相当于json.key1 = {"a":10, "b":12}和json.key2 = {"a":20, "b":24}。
同理,取值的时候,如果你用 json[key2]是会报错的,因为他此时会把key2当成一个变量,它会去找key2这个变量对应的值来作为key,当然也会报错。所以需要json['key2'],等效于 json.key2.
上述demo得到的outer会是这样的:
达到了预期的效果。
综上:json.appId是把appId当成字符串作为key的 json[appId]是把appId作为变量,而取的是appId这个变量的值作为key。。
相关推荐
68--[自动点号机].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码68--[自动点号机].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码68--[自动点号机].zip源码scratch2.0 3.0编程项目源文件源码案例...
C++实现随机点名器 版本v1.0 1.支持文件读入(txt文本文件) 2.支持手动输入 3.不重复点名
自动移动管线点点号,引线是点号基点与原来基点,更加直观表示
本文主要介绍关于mongo数据集合属性存在点号(.)的相关内容,下面话不多说了,来一起看看详细的介绍吧 基本知识点: 1.似乎mongo3.6之前不允许插入带点(.)或美元符号($)的键,但是当我使用mongoimport工具导入...
CAD自动编号软件,适合桩位、点号的编制
但除此之外,其实 Bash 中还有很多可以起到胶水作用的标点符号,例如点号(.)、逗号(,)、括号(<>)、引号(”)之类。下面我们就来看一下可以用来进行数据转换和转移的尖括号(<>)。 转移数据 如果你对...
olebca#连接数据库的软件管线人员必用
wince edit 控件 只允许输入数字和点号(只接受浮点数),相关文章地址:http://zhuyanfeng.com/archives/1369或http://blog.csdn.net/zhuyf87/article/details/8796867
CASS一键标记高程与点号插件(命令ZD)
JSON 对象使用在大括号({})中书写。 对象可以包含多个 key/value(键/值)对。 key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。 key 和 value 中使用冒号(:)分割...
CAD管线图文字整饰神器,一键处理,重叠管线点号自动避让处理,又名自动挪点号。采用VB后期绑定技术,几乎可以匹配所有的CAD版本,Windows操作系统32位64位均可。相对第1版,增加了优化次数,标注引线,避让图层增加...
本文通过几个具体的例子.来认清楚php编程中echo用逗号和用点号连接之前的区别.有需要的小伙伴可以参考下
大部分同学都知道逗号要比点号快,但就是不知道为什么,更不知道逗号与点号这两者之间到底有什么区别。下面小编就来详细的为大家介绍一下,需要的朋友可以过来参考下
批量输入点号 cad
下面小编就为大家分享一篇基于php中echo用逗号和用点号的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
在使用eclipse或者MyEclipse工具开发的过程中,您可能会遇到,当您输入点号没有提示,您是不是觉得很郁闷呢,或者还是怀疑这可能是工具的bug呢! 可是任何问题都有解决的办法,我可个解决大全或许可以帮你。
php cookie名不能使用点号(句号),应该说可以使用点号的cookie名,但会被转换,要知道为什么,祥看本