是否有任何实际理由对 JSON 键使用带引号的字符串?

2023-12-07

根据克罗克福德的说法json.org, 一个 JSONobject由。。。制成由。。。做成members,它由pairs.

每对都是由一个string and a value,有一个string被定义为:

字符串是零个或多个的序列 Unicode 字符,用双引号包裹 引号,使用反斜杠转义。 A 字符被表示为单个 字符串。一串很 很像 C 或 Java 字符串。

但实际上,大多数程序员甚至不知道 JSON 键应该用双引号引起来,因为大多数浏览器不需要使用双引号。

将 JSON 用双引号引起来有什么意义吗?

有效示例:

{
  "keyName" : 34
}

与无效相反:

{
   keyName : 34
}

JSON 键应该用引号引起来的真正原因依赖于 ECMAScript 3 标识符的语义。

保留字不能用作属性名称在不带引号的对象文字中,例如:

({function: 0}) // SyntaxError
({if: 0}) // SyntaxError
({true: 0}) // SyntaxError
// etc...

如果使用引号,则属性名称有效:

({"function": 0}) // Ok
({"if": 0}) // Ok
({"true": 0}) // Ok

Crockford 自己的解释是这次演讲,他们希望保持 JSON 标准简单,并且不希望对其进行所有这些语义限制:

....

就在那时我们发现了 未引用的名称问题。事实证明 ECMA Script 3 保留了一个重击 词政策。保留字必须是 在关键位置引用,即 真的很麻烦。当我到达周围时 为了将其制定为标准,我 不想把所有的 标准中的保留字, 因为它看起来真的很愚蠢。

当时我正试图说服 人们:是的,你可以写 JavaScript 中的应用程序,它是 真的去上班了,这很好 语言。那时我不想说, 同时:看看这个 他们确实做了愚蠢的事!所以我 决定,相反,让我们引用 键。
这样我们就不用告诉 任何人都知道它有多糟糕。

这就是为什么直到今天,密钥仍被引用在 JSON。

...

ECMAScript 第五版标准修复了这个问题,现在在 ES5 实现中,即使是保留字也可以在对象文字和成员访问中使用而不带引号(obj.function在 ES5 中可以)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有任何实际理由对 JSON 键使用带引号的字符串? 的相关文章

  • 创建一个支持 json 序列化的类以与 Celery 一起使用

    我正在使用 Celery 来运行一些后台任务 其中一项任务返回我创建的 python 类 考虑到有关使用 pickle 的警告 我想使用 json 来序列化和反序列化此类 有没有一种简单的内置方法可以实现这一目标 该类非常简单 它包含 3
  • 可以跨 iframe 共享 javascript 导入吗?

    我有一个 Web 应用程序 其中有多个 iframe 它们都需要导入相同的 javascript 库 例如 jquery 有没有办法只加载一次并以某种方式在所有 iframe 之间共享该数据 我不想让我的页面加载缓慢 因为它为每个 ifra
  • 如何在react中返回点击元素的属性?

    我想知道是否有一种简单的方法来获取单击元素的属性React js function App return
  • 获取访客的 Optimizely A/B 测试和变化

    当我在网站上运行实验时 我希望能够找出当前访问者看到的测试和变体 我无法找到如何做到这一点优化Javascript API https www optimizely com docs api 您可以获得第一个正在运行的实验的 ID 假设您有
  • JavaScript 变量带有一个我需要在 Html.ActionLink 中使用的 ID

    我的 jQuery 代码中有一个 JavaScript 变量 其中包含一个我需要在我的Html ActionLink但它不起作用 Html ActionLink Genomf r AnswerForm AnswerNKI new id go
  • 使用 mongoDB 插入子文档

    我收集了以下文件 id 2 workspace name 1 widgets name 2 widgets name 3 widgets name 4 widgets 我怎样才能插入 id 1 blabla blabla 在 小部件 中的
  • 将值传递给映射函数 - CouchDB

    我想知道是否可以将值传递给 couchDB 设计文档中的映射函数 例如 在下面的代码中 可以传递用户输入的值并使用该值来运行地图函数 也许我可以传递用户UserName当他们登录时 然后根据地图功能显示视图 function doc if
  • 如何在 Chrome 中将 Set 转换为数组?

    如何将集合转换为数组 https stackoverflow com questions 20069828 how to convert set to array给出了将 Set 转换为 Array 的三个答案 目前在 Chrome 浏览器
  • `forEach` 函数中的 `return` 关键字是什么意思? [复制]

    这个问题在这里已经有答案了 button click function 1 2 3 4 5 forEach function n if n 3 it should break out here and doesn t alert anyth
  • 在 json 对象中执行 javascript 代码?

    有远吗 所以像这样 key1 val1 key2 val2 some code document getElementById someid innerHTML test 那么 some code 会在没有任何用户干预的情况下执行吗 No
  • 为什么 jQuery 对损坏标记的解释与浏览器不同?

    我之前已经回答过这个问题 https stackoverflow com a 19101905 1253312 但我并不完全理解why答案是正确的 答案的要点 p p function jqrender html a href http w
  • GraphQL 错误字段类型必须是输入类型,但得到:

    这是突变 const createNotebook mutationWithClientMutationId name CreateNotebook inputFields token type GraphQLString details
  • 发送带有图像的嵌套 JSON

    我一直在尝试研究一种能够通过 Ajax 将嵌套 JSON 请求发送回服务器的方法 根据我的理解 我们主要用于向服务器发送图像或文件的 formdata 在这种情况下不起作用 因为 FormData 似乎不处理嵌套对象 这就是我需要发送的有效
  • 在 Javascript 中实现 Zobrist 哈希

    我需要在 Javascript 中为国际象棋引擎实现 Zobrist 哈希 我想知道实现此目的的最佳方法是什么 现在 我不是计算机科学家 也从未上过正式的算法和数据结构课程 所以如果我在这方面有点偏离 我很抱歉 据我了解 我需要一个 64
  • jQuery onclick 隐藏其父元素[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想隐藏 li tag on a 使
  • 抓取 Shopee API v4

    我有一个最终项目 其中我想要检索的数据是通过在shopee上抓取数据来获取的 但是当我在隐藏的API上抓取shopee时遇到问题 当我在Insomnia脚本上尝试时 脚本会运行 但是当我尝试时在本地或 google colab 脚本上 这是
  • 在 JavaScript/CoffeeScript 中确定一个数组是否包含另一个数组的内容

    在 JavaScript 中 如何测试一个数组是否包含另一个数组的元素 arr1 1 2 3 4 5 8 1 10 2 3 4 5 9 function name arr1 gt true 没有 set 函数可以执行此操作 但您可以简单地执
  • JavaScript 模板文字稍后替换变量(在知道值之前)

    是否可以在已知值之前以某种方式使用模板文字 JS 模板文字的每个演示都如下所示 var name John var s Hello name 但在现实世界中 模板是在我们知道变量值之前定义的 某处定义了模板 在页面加载时 var s Hel
  • 多个引导模式的滚动问题

    我有一个带有大量信息的模态页面 因此您需要滚动 该模式包含指向第二个模式的链接 When I 打开模态 1 单击链接打开模式 2 模式 1 保持在后台 然后关闭模式 2 以便我回到模式 1 modal 1 失去滚动 仍然有一个滚动条 但它不
  • 如何使用 jQuery 解析 JavaScript 对象

    jQuery JavaScript 中用于解析 JSON 对象并返回键 值对的 foreach 等效项是什么 JSON 对象 是什么意思 JSON 是一种用于序列化对象的文本格式 如果要循环访问通过反序列化 JSON 字符串获得的对象中的属

随机推荐

  • Jade Templates - 动态调用 Mixin

    如何使用 json 中的字符串输入 Jade 模板来动态加载 mixin 下面 目标是twoColumn jade加载foo and bar mixins 两列 jade mixin twoColumns obj container flu
  • AngularJS -$compileProvider.preAssignBindingsEnabled 不是一个函数

    我在尝试执行以下操作时收到以下错误消息gulp serve在我的 AngularJS 10 6 1 版 应用程序上 Error injector modulerr Failed to instantiate module myAppName
  • MS-DOS 如何获取命令的输出作为变量

    我编写了一个程序 该程序将 DOS 的键码作为整数返回 但我不知道如何将其输出作为变量 注意 我使用的是 MS DOS 7 Windows 98 所以无法使用FOR F or SET P 有谁知道我该怎么做 Eric Pement 描述了一
  • 如何在转换中使用枢轴点

    如何使用中心点平移对象 我有一个矩形 其中心点远离矩形的位置 当我旋转矩形时 它绕其中心轴旋转 如果我在 modelView 矩阵中旋转之前乘以位置 ModelViewMatrix Rotation Scaling Position 假设我
  • 在 StoryBoard 上设置自定义附加属性

    我有一个故事板 想要设置附加属性 VisualStateUtility InitialState 我尝试过各种组合 但属性从未得到解决 我收到以下错误 无法解析 TargetProperty VisualStateUtility Initi
  • 在 Ruby 中使用 new 运算符对自动激活哈希值进行多重初始化

    我想初始化几个自动激活哈希值通过一行表达式 到目前为止 我找到了一种额外的方法AutoHash object class AutoHash lt Hash def few n 0 Array new n AutoHash new end 这
  • Angular 2 rc5,使用注入的管道的单元测试问题

    我正在使用 angular2 rc 5 我编写了一个自定义管道 可以从 json 中获取值 自定义管道 literal pipe ts 看起来像 import Pipe PipeTransform Inject from angular c
  • 在从加载标签的视图扩展的页面上使用 Django template_tag

    我已向我的应用程序添加了一个模板标签 我将其加载到位于的视图中inc base html 该视图包含我的基本 HTML 布局 我所有其他观点开始 extends inc base html 在我的视图之一中 我想引用我的模板标签 该标签加载
  • 使用三个 CSG 进行 3D 布尔运算

    按照此处的示例 http learning Threejs com blog 2011 12 10 constructive solid geometry with csg js 并使用 Three js 与https github com
  • cellDoubleClicked 文本 python

    我在使用 PyQt5 时遇到一个问题 我已经制作了一个 QTableWidget 它显示我之前在 pandas 中制作的 DataFrame 来自电子表格 我尝试做的不成功的事情是 从用户双击的单元格中获取文本 以便我可以使用该信息根据所做
  • 所有图像加载后如何发出警报?

    我正在构建一个 JavaScript 游戏 我想在加载所有图像后发出警报 我尝试了这段代码 但它不起作用 function loadEveryThing var imgNumber 0 img1 new Image img1 src 1 p
  • “#”附近的语法不正确。带有 SQL 数据库的 VB.net

    我正在尝试使用以下代码获取日期 今天的 Max 字段 Dim todaydate Format Today Date dd MM yyyy Dim sql1 As String Select max snum From tblbill wh
  • JButton 在鼠标悬停之前不可见

    我正在为我的项目创建一个图形用户界面 当 gui 首次加载时 只有背景可见 因此按钮不可见 但当鼠标悬停在按钮上时 它们是可见的 解决这个问题的办法是什么 public class Home extends JFrame New JPane
  • 在 Scala 中将嵌套案例类转换为嵌套映射

    我有两个嵌套案例类 case class InnerClass param1 String param2 String case class OuterClass myInt Int myInner InnerClass val x Out
  • Azure表存储存储多种类型

    对于以下场景 您有什么建议 我有一个名为 Users 的天蓝色表 其中列如下 首要的关键 RowKey 时间戳 名 LastName Email Phone 然后每个用户都有不同类型的任务 我们将它们称为TaskType1 和TaskTyp
  • jQuery:如果单击链接则添加类

    我在链接中调用 jquery 函数 onclick 例如 a class active href Content 1 a a href Content 2 a a href Content 3 a 正如您所看到的 第一个链接默认具有 act
  • 词形还原java [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个词形还原Java 中英语的实现 我已经找到了一些 但我需要一些不需要太多内存来运行的东西 顶部 1 GB 谢谢 我不需要词干分析器 T
  • 在 webGL 中渲染 NURBS 曲面

    我需要一些有关在 webGL 中渲染 NURBS 曲面的帮助 几天前 我们的教授指派我们用 NURBS 绘制一面旗帜并为其制作动画 我们必须使用 webGL 并且不能使用 trhee js 我不知道如何继续 尽管我或多或少了解 NURBS
  • 将列表转换为集合会改变元素的顺序吗?

    当我做类似的事情时 U 1 0 0 0 0 0 1 0 set U 它给了我 0 0 1 0 1 0 0 0 我只想将列表转换为集合 有什么帮助吗 Thanks 套装未订购 字典也没有排序 如果您想保留特定顺序 请使用列表 gt gt gt
  • 是否有任何实际理由对 JSON 键使用带引号的字符串?

    根据克罗克福德的说法json org 一个 JSONobject由 制成由 做成members 它由pairs 每对都是由一个string and a value 有一个string被定义为 字符串是零个或多个的序列 Unicode 字符