当前位置: 首页 > news >正文

json/js对象的key有什么区别?

1.对于JS对象来说

一个js对象如果是这样的

obj = {"0": "小明","0name": "小明明", "": 18,"¥": "哈哈","  ": "爱好广泛"
}

对于js对象来说,有时候key是不用加引号的,什么时候不加?那就是当key是符合标识符规则的时候不用加

①符合标识符情况

Key加不加"",都一样,读取key对应的value有两种方式:obj["key"]obj.key都可以。

let obj1 = {name: "小明",$age: 18,_like: "爱好广泛"
}
let obj2 = {"name": "小红","$age": 16,"_like": "爱好很少"
}console.log(obj1) 
// {name: "小明", age: 18, _like: "爱好广泛"}
console.log(obj1.name, obj1.$age, obj1._like) 
// 小明 18 爱好广泛
console.log(obj1['name'], obj1['$age'], obj1['_like']) 
// 小明 18 爱好广泛console.log(obj2) 
// {name: "小红", $age: 16, _like: "爱好很少"}
console.log(obj2.name, obj2.$age, obj2._like) 
// 小红 16 爱好很少
console.log(obj2['name'], obj2['$age'], obj2['_like']) 
// 小红 16 爱好很少

②不符合标识符情况

Key必须加"",读取key对应的value只能是obj["key"]

let obj = {"0": "小明","0name": "小明明","": 18,"¥": "哈哈","  ": "爱好广泛"
}
console.log(obj) // {0: "小明", 0name: "小明明", "": 18, ¥: "哈哈", "  ": "爱好广泛"}
console.log(obj.0, obj.0name) // 报错
console.log(obj['0'], obj['0name'], obj[''], obj['¥'], obj['  ']) // 小明 小明明 18 哈哈 爱好广泛

③标识符原则

1、首字母必须是字母、下划线(_)或美元符号($),不能是数字。

2、除首字母外,其他字符可以是字母、数字、下划线或美元符号($)。

3、普通标识符(用作变量名、函数名和循环语句中用于跳转的标记)不能是保留字符或关键字。

4、在严格模式下,arguments和eval不能用作变量名,函数名或者参数名

2.JSON 和 JS 对象的区别

①JSON

JSON 是序列化的对象或数组,它是 JS 对象的字符串表示方法,也就是说,JSON本质上是一个字符串。JSON以键值对 (key, value) 的形式存在,其中:

  • JSON的 key 必须用 "" (双引号)包起来
  • JSON的 value 不可以为 function/undifined/NaN
  • 数据结尾不允许出现无意义的 ,

②JS 对象

对比而言,JS对象没有以上三条,也是与 JSON 最大的不同,此外就javascript本身而言,单引号双引号没有区别所以js中双引号也可以换成单引号

③JSON 与 JS 对象的转换

  • 从 JSON 转为 JS 对象:使用 JSON.parse() 方法
  • 从 JS 对象转为 JSON:使用 JSON.stringify() 方法

④应用场景


JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,传递这串字符串比传递一大组数据轻松得多,在需要的时候再将它还原为支持的数据格式

http://www.lryc.cn/news/181894.html

相关文章:

  • 极大似然估计概念的理解——统计学习方法
  • python模拟表格任意输入位置
  • 如何限制文件只能通过USB打印机打印,限制打印次数和时限并且无法在打印前查看或编辑内容
  • 车牌文本检测与识别:License Plate Recognition Based On Multi-Angle View Model
  • Blender中的4种视图着色模式
  • Flutter项目安装到Android手机一直显示在assembledebug
  • 数据挖掘实验(二)数据预处理【等深分箱与等宽分箱】
  • Vue2 第一次学习
  • tiny模式基本原理整合
  • 使用聚氨酯密封件的好处?
  • DevEco Studio如何安装中文插件
  • 10.2 校招 实习 内推 面经
  • Golang 语言学习 01 包含如何快速学习一门新语言
  • 整理了197个经典SOTA模型,涵盖图像分类、目标检测、推荐系统等13个方向
  • 10.4 小任务
  • AJAX--Express速成
  • 开题报告 PPT 应该怎么做
  • JavaScript系列从入门到精通系列第十四篇:JavaScript中函数的简介以及函数的声明方式以及函数的调用
  • 当我们做后仿时我们究竟在仿些什么(三)
  • 如何将超大文件压缩到最小
  • [C#]C#最简单方法获取GPU显存真实大小
  • 【数据结构】红黑树(C++实现)
  • day-64 代码随想录算法训练营(19)图论 part 03
  • xss测试步骤总结
  • 2023最新简易ChatGPT3.5小程序全开源源码+全新UI首发+实测可用可二开(带部署教程)
  • 【Redis】数据过期策略和数据淘汰策略
  • RPA的优势和劣势是什么,RPA能力边界在哪里?
  • Kubernetes 学习总结(38)—— Kubernetes 与云原生的联系
  • 号卡推广管理系统源码/手机流量卡推广网站源码/PHP源码+带后台版本+分销系统
  • 【C语言】汉诺塔 —— 详解