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

JSON的key值为数字时如何使用

阅读更多
        JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
       

        比较标准的写法:
var json = '{"a":"1", "b":"2"}';  
var data = eval('('+ json +')');  
alert(data.a);  
alert(data['a']);  

       这样两种方式都可以取到json中的值。

        但是当key的值为数字时,只能使用类似数组下表的访问方式取值。
var json = '{"0":"a", "1":"b", "length":2}';  
var data = eval('(' + json + ')');  
//alert(data.0);    //报错,此方式不可用  
alert(data['0']);  
alert(data[0]);    //注意此写法与数组用下标访问是相同的  
alert(data.length)  //貌似数组的长度 


        1.使用json时,通常都使用第一种方式,且key一般应使用合法的变量名(字母或下划线开头的包括字母、下划线和数字的字符串)

        2.对象的两种访问方式:data.key和data[’key’]各自有自己的应用场景,一般情况使用data.key即可,也比较直观(它符合其它高级语言中访问对象中属性的方式);

        当key为一个变量时,并且使用在循环中,用data['key']这种方式。
for(var i=0; i < 10; i++) {  
  s += data['key' + i];  //循环调用,可简化代码  
}

        3.第三种采用数字做key的方式,虽然不推荐,但也是有其应用价值的;

        如当建立一个与数据库中id一一对应的map对象的时候,

        可直接用id的数值做key,虽然你可以给它加上一个字母前缀来让它符合合法的变量名的标准,

        并让它的数据能通过data.key的方式访问,

        但如果数据量非常大的话,

        为每个id都加一个前缀,+字符连接运算也是要消耗性能的,

        特别是在很少需要采用data.key方式去访问属性的情况下,

        那么可以抛弃此调用方式,直接用数字做key也未尝不可,

        除了key名称不符合合法变量名的标准之外,似乎并没有其它损失;
分享到:
评论
1 楼 wuzhihui001 2012-08-27  
谢谢,正好用到了这种情况, 用id做key  非常感谢你的这个文章

相关推荐

    Timesten内存数据库支持json格式的包

    1. 根据key获取json的值; 2. 根据index获取Array的值; 3. 根据sys_cursor等生成json数据; 4. 验证是否json格式等 备注:数据格式只支持字符串的形式,不支持数字,不然数据会有误。 下面是pl\sql里写的包,弄...

    实例详解JSON取值(key是中文或者数字)方式

    本文通过实例详解JSON取值(key是中文或者数字)方式,非常不错,具有参考借鉴价值,需要的的朋友参考下吧

    深入浅析Android JSON解析

    对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,...

    json表达式所用到的包

    数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、...

    Timesten内存数据库与Json数据转换

    近期公司用到了Timesten内存数据库,但是Timesten暂...1. 根据key获取json的值; 2. 根据index获取Array的值; 3. 根据sys_cursor等生产成json数据; 备注:数据格式只支持字符串的形式,不支持数字,不然数据会有误。

    springMVC poi解析ajax上传excel文件,返回json对象\list数组

    先判断文件的类型(excel处理有两种此处为两种通用)是.xls/.xlsx,采用Apache的POI的API来操作Excel,读取内容后保存到List中,再将List转Json(使用Linked,增删快,与Excel表顺序保持一致),Sheet表1————&gt;List...

    Python解析json时提示“string indices must be integers”问题解决方法

    这个错误告诉我,[ ]里面应该是数字而不是字符串,但是dict使用key访问也可以,这种错误感觉解析出来的结果像是一个list。 所以考虑是字符串解析的问题。打印解析的结果,是一长串的字符串,一堆的key挤在一起,...

    sjcfg:用于简单json配置读写的命令行工具

    这是简单的JSON Config或sjcfg 它提供了一个... 所使用的文件按优先顺序排列: -f值,如sjcfg -f file.json my.key或sjcfg -f file.json my.key value $SJCFG_FILE环境变量的内容$HOME/.config/sjcfg.json (如果未定

    c#源码转java源码的-json11:适用于C++11的微型JSON库

    Json对象代表任何JSON值:null,bool,数字(整数或双精度),字符串(std :: string),数组(std :: vector)或对象(std :: map)。 Json对象的作用类似于值。 可以对它们进行分配,复制,移动,比较是否相等或...

    json-mop:桥接CLOS和JSON对象的元类

    选项:json-type默认为:any ,但是您可以使用以下方法之一控制每个插槽值与JSON的相互转换:JSON类型说明符类型评论:any 猜测编码和解码值的方法:string 强制一个字符串值:number 强制数字值:hash-table 强制执行...

    JavaScript JSON数据处理全集(小结)

    JSON 语法 JavaScript 对象表示语法的子集。 数据在名称/值对中 ...JSON 对象使用在大括号({})中书写。 对象可以包含多个 key/value(键/值)对。 key 必须是字符串,value 可以是合法的 JSON 数据类型

    iOS中json解析出现的null,nil,NSNumber的解决办法

    数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组...

    JSON 对象

    key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。 key 和 value 中使用冒号(:)分割。 每个 key/value 对使用逗号(,)分割。 访问对象值 你可以使用点号(.)来...

    TinyLoggly:将 JSON 数据从浏览器推送到 Loggly.com。 具有数字字符串值的 Loggly 错误的解决方法

    将 $n 附加到数字值的键以防止令人讨厌的 loggly 错误“由于索引时的映射冲突而删除了解析的字段(即最初作为一种类型发送,后来作为新类型发送)” Loggly 本身将键限制为 64 个字符,它还用下划线替换任何空格或...

    序列化模块json代码实例详解

    key必须是字符串,value只能是: 字典,列表,字符串,数字,bool值 在任何语言中他的type都必须是字符串类型 json是所有的变成语言都公认的一种数据类型 如果是python语言要给java语言发送信息,那么就可以转换...

    i-cache:最简单的内存缓存,以纯 json 结构存储和获取对象

    value Object值,将与 JSON.stringify 一起存储 lifetime :数字(可选)密钥应在多长时间后到期,以seconds callback :函数(可选) iCache . set ( 'hi' , 'Hello World' ) ; iCache.get 按键获取。 key : ...

    C#基类库(苏飞版)

    主要是实现了验证,是否为空,是否为数字等。 3.JavascriptHelp 帮助输出简单的JS代码 4.最新的皮肤帮助类 UI_Misc_Helper JavaScript|Jquery相关 1.jQuery.cookie帮助类 访问系统相关 1.C#计算机信息类...

    koditools:一套与Kodi交互的工具

    键代表您要绑定的键(数字acsii值或字符本身或KEY_CHARACTER(可用于数字))。 该值应该是一个json字符串,其中包含应执行的操作 [keybindings] f = { " action " : " ActivateWindow(favourite) " } # map f key...

    C#基础类库

    根据Key取Value值 2.根据Key修改Value 3.添加新的Key ,Value键值对 4.根据Key删除项 复制代码 17.日历 CNDate 1.传回公历y年m月的总天数 2.根据日期值获得周一的日期 3.获取农历 复制代码 18.上传下载 ...

    vue实现将一个数组内的相同数据进行合并

    获取服务器传来的数组数据进行,找出其中价格相同的进行数量相加,合并该段数据: ... let contrast_1 = JSON.parse(JSON.stringify(orderList)); for(let x in contrast_1){ contrast_1[x].trade_price = this.toD

Global site tag (gtag.js) - Google Analytics