【问题标题】:JSON undefined value typeJSON 未定义值类型
【发布时间】:2019-08-12 11:26:42
【问题描述】:

我遇到了这个 JSON 代码。我注意到它使用了undefined 值。在哪里可以找到有关此值类型的更多信息?

  tracks:[
     (         {
        codec:"h264",
        language:undefined,
        id:1,
        bitrate:785236,
        content:"video"
     }         ),
     (         {
        codec:"aac",
        language:undefined,
        id:2,
        bitrate:75969,
        content:"audio"
     }         )
  ],

【问题讨论】:

  • 您确定 JSON 有效吗?括号(首先由 MuraliPrasanth 指出)至少看起来很可疑。
  • 这不是有效的 JSON。不允许使用括号。文字 undefined 也不是。 undefined 是 javascript 中的一个值:ecma-international.org/ecma-262/5.1/#sec-4.3.9
  • 你确定那是 JSON 吗?看起来也像 object literal 的 sn-p。

标签: json


【解决方案1】:

undefined 是一种特殊类型,它只是表示变量language 未初始化或可能尚未定义。

javascript中的null只是表示没有值,也可以用来表示数字和字符串以及对象的“无值”。undefined值也表示没有值,它是尚未初始化的变量的值,是从不存在的object 属性或array 元素获取时的值 undefined 是一个预定义的全局变量,初始化为未定义的值。

nullundefined 没有任何属性或方法。实际上,使用.[] 访问这些值的属性或方法会导致TypeError

【讨论】:

  • 将定义的值放入变量中使其不是未定义的。唯一的选择是将 undefined 值存储到该属性中,或者该 JSON 不是自动生成的。
  • 在语言方面,“未定义”绑定到整个前一句(如果缺少逗号)或“语言变量”,而不是“数据”(更进一步)。我相信你被误解了。
  • 虽然在某些情况下可以说 key:undefined 在 json 作为更新数据存储时隐式删除​​密钥的方法。很多时候,没有一个键和它有一个空值是不一样的
【解决方案2】:
  • undefined不是有效的 JSON 值,即使它在 javascript 中有效。

    来自the official JSON standard (ECMA-404,第 5 节):

    JSON 值可以是对象、数组、数字、字符串、true、false 或 null。

  • 对于 JSON,使用 null 而不是 undefined{ "something": null }

【讨论】:

  • 如果您想要一个未定义的值,只需从 JSON 中完全省略它。这样,当您在解析后尝试读取它时,它将是未定义的。
  • 但这假设您完全了解响应应该是什么样子。如果您同时构建服务器和客户端,这很好,但通常情况并非如此。
  • 当然。这不是最佳解决方案,只是当您(无论出于何种原因)必须返回未定义值时的一种解决方法。
  • 好答案,次优解决方案。 Null 和 undefined 是不一样的。如果 NULL 在您的系统中是一个有效值,那么您应该能够传达“是的,我有一个值,它是 NULL”和“不,我没有任何值”。 PHP,例如受其可选参数中缺少 undefined 的影响,很难(甚至不可能?)查看调用者是显式传递了默认值还是根本没有传递值。我会说totymedli的想法更好。如果客户不知道从响应中得到什么,那么它也没有做好处理它的准备。
猜你喜欢
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 2012-07-28
  • 2020-04-03
  • 2018-04-03
相关资源
最近更新 更多