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

比较标准的写法:

  1. var json = '{"a":"1", "b":"2"}';
  2. var data = eval('('+ json +')');
  3. alert(data.a);
  4. alert(data['a']);

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

但是当key的值为数字时,只能使用类似数组下表的访问方式取值。

  1. var json = '{"0":"a", "1":"b", "length":2}';
  2. var data = eval('(' + json + ')');
  3. //alert(data.0);    //报错,此方式不可用
  4. alert(data['0']);
  5. alert(data[0]);    //注意此写法与数组用下标访问是相同的
  6. alert(data.length)  //貌似数组的长度

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

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

当key为一个变量时,并且使用在循环中,用data['key']这种方式。

  1. for(var i=0; i < 10; i++) {
  2. s += data['key' + i];  //循环调用,可简化代码
  3. }

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

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

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

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

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

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

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

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

除了key名称不符合合法变量名的标准之外,似乎并没有其它损失;

JSON的key值为数字时如何使用的更多相关文章

  1. Gson如何解析key值是数字的json数据

    1.使用注解@SerializedName来解决这个问题 2.比如有如下json数据:(key值是数字"1112") { "1112": "抖音&qu ...

  2. 解决js array的key不为数字时获取长度的问题

    最近写js时碰到了当数组key不为数字时,获取数组的长度为0 的情况. 1.问题场景 var arr = new Array(); arr[‘s1‘] = 1001; console.log(arr. ...

  3. js json按key值排序

    最近有个需求需要把json按key值进行排序,可是js并没有直接的函数可以对json进行排序的这么办呢? 然后想到了一个间接的方法来实现: 1.将json中的key值取出,存在一个数组中,然后对这个数 ...

  4. Python解析非标准JSON(Key值非字符串)

    采集数据的时候经常碰到一些JSON数据的Key值不是字符串,这些数据在JavaScript的上下文中是可以解析的,但在Python中,没有该部分数据的上下文,无法采用json.loads(JSON)的 ...

  5. Json不知道key值情况下获取第一个键值对

    JObject jsonData = new JObject(); jsonData.Add("1", "1"); jsonData.Add("2&q ...

  6. js 递归修改json无限级key值

    var tree = [ { name: 'node1' }, { name: 'node2', children: [{ name: 'node-2-1' }, { name: 'node2-2' ...

  7. Java代码中获取Json的key值

    测试json字符串: {"access_token":"hkbQl5o_l67dZ7_vJRATKBwTLk9Yj5QyMuOJThAr8Baj0xWf4wxW1p4ym ...

  8. json 将key值以字符串形式取出

    int GetJsonCString(const Json::Value& value, char* str, int n){ if (!value.empty() && va ...

  9. 对象key值排序,以key值(数字)大小顺序遍历属性,helper._sort()

    var helper = { _sort:function(data){ //{“20141216”:{},“20141217”:{}}按大小排序, var arr1 = [],arr2=[]; fo ...

随机推荐

  1. python 模块 optparse

    optparse,是一个能够让程式设计人员轻松设计出简单明了.易于使用.符合标准的Unix命令列程式的Python模块.生成使用和帮助信息. 下面是一个简单的示例: import optparse p ...

  2. bash&nbsp;shell笔记1&nbsp;脚本基础知识

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/505644 * ...

  3. 数据仓库-数据采集-ETL漫谈

    数据仓库之ETL漫谈ETL,Extraction-Transformation-Loading的缩写,中文名称为数据抽取.转换和加载.大多数据仓库的数据架构可以概括为:数据源-->ODS(操作型 ...

  4. mysql 纸 mysql_fetch_array OR mysql_fetch_assoc OR mysql_fetch_row

    <?php $con = mysql_connect("localhost", "root", "123456");if (!$con ...

  5. C#连接Mysql数据库 MysqlHelper.cs文件

    mysql.data.dll下载_c#连接mysql必要插件mysql.data.dll是C#操作MYSQL的驱动文件,是c#连接mysql必要插件,使c#语言更简洁的操作mysql数据库.当你的电脑 ...

  6. 453. Minimum Moves to Equal Array Elements 一次改2个数,变成统一的

    [抄题]: Given a non-empty integer array of size n, find the minimum number of moves required to make a ...

  7. Servlet和JSP简述

    什么是Servlet和JSP 用Java开发Web应用程序时用到的技术主要有两种,即Servlet和JSP. Servlet是在服务器端执行的Java程序,一个被称为Servlet容器的程序(其实就是 ...

  8. 3、python的传入参数

    转载:https://blog.csdn.net/abc_12366/article/details/79627263 1.位置参数: def func(a, b): print(a+b) func( ...

  9. 字符串的查找删除---C++中string.find()函数与string::npos

    给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串 输入: 输入只有一组数据 输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止 输出: 删除输入的短字符串 ...

  10. php无限级分类

    使用递归方法,遍历子类,对数据进行重新排序,使用level进行无限级分类 /** * 功能:无限级分类 * 参数:$data 类别查询结果集 * 返回值:$arr 排序后的数组 */ public f ...