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


    1.对于JS对象来说

    一个js对象如果是这样的

    1. obj = {
    2. "0": "小明",
    3. "0name": "小明明",
    4. "": 18,
    5. "¥": "哈哈",
    6. " ": "爱好广泛"
    7. }

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

    ①符合标识符情况

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

    1. let obj1 = {
    2. name: "小明",
    3. $age: 18,
    4. _like: "爱好广泛"
    5. }
    6. let obj2 = {
    7. "name": "小红",
    8. "$age": 16,
    9. "_like": "爱好很少"
    10. }
    11. console.log(obj1)
    12. // {name: "小明", age: 18, _like: "爱好广泛"}
    13. console.log(obj1.name, obj1.$age, obj1._like)
    14. // 小明 18 爱好广泛
    15. console.log(obj1['name'], obj1['$age'], obj1['_like'])
    16. // 小明 18 爱好广泛
    17. console.log(obj2)
    18. // {name: "小红", $age: 16, _like: "爱好很少"}
    19. console.log(obj2.name, obj2.$age, obj2._like)
    20. // 小红 16 爱好很少
    21. console.log(obj2['name'], obj2['$age'], obj2['_like'])
    22. // 小红 16 爱好很少

    ②不符合标识符情况

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

    1. let obj = {
    2. "0": "小明",
    3. "0name": "小明明",
    4. "": 18,
    5. "¥": "哈哈",
    6. " ": "爱好广泛"
    7. }
    8. console.log(obj) // {0: "小明", 0name: "小明明", "": 18, ¥: "哈哈", " ": "爱好广泛"}
    9. console.log(obj.0, obj.0name) // 报错
    10. 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 对象中表示的一组数据转换为字符串,传递这串字符串比传递一大组数据轻松得多,在需要的时候再将它还原为支持的数据格式

  • 相关阅读:
    Review Intro to NoSQL
    某团实习面经
    套接口通用发送缓存区限定
    17.11 JDBC 2.0 操作(血干JAVA系类)
    【Java】PAT(Basic Level) 1016 部分A+B
    C 标准库 - <limits.h>
    [HDLBits] Exams/ece241 2014 q5a
    微服务井喷时代,我们如何规模化运维?
    java栈和自定义栈
    竞赛 基于机器视觉的行人口罩佩戴检测
  • 原文地址:https://blog.csdn.net/m0_52226803/article/details/133411510