JSON未定义的值类型

33 json

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

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

Rin*_*ngo 68

  • undefined不是有效的json值,即使它在javascript中有效.根据官方的json标准 (ECMA-404,第5节):

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

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

  • 如果您想要一个未定义的值,只需从JSON中完全省略它.这样,当您尝试在解析后读取它时,它将是未定义的. (9认同)
  • 好的答案,次优的解决方案。空和未定义是不一样的。如果 NULL 是系统中的有效值,那么您应该能够传达“是的,我有一个值,它是 NULL”和“不,我没有任何值”。例如,PHP 的可选参数中缺乏未定义的内容,因此很难(甚至不可能?)了解调用者是否显式传递了默认值或根本没有传递值。我想说 totymedli 的想法更好。如果客户不知道从响应中期望什么,那么它也没有做好处理它的准备。 (4认同)
  • 但这假设您完全了解响应应该是什么样子。如果您同时构建服务器和客户端,这很好,但通常情况并非如此。 (3认同)
  • 请注意,对于数组来说,“仅省略 JSON 中的值”是不可能的。`JSON.stringify([undefined])` 给出了 `[null]`,这不是一个忠实的表示。 (3认同)
  • 当然。这不是最佳解决方案,只是当您(无论出于何种原因)必须返回未定义值时的一种解决方法。 (2认同)

Mur*_*nth 6

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

\n\n

nullinjavascript只是表示没有值,也可以用来表示数字、字符串以及对象的 \xe2\x80\x9cno value\xe2\x80\x9d。undefined值也表示没有值,它是值尚未初始化的变量以及从不存在的object属性或array元素中获取的值undefined是预定义的全局变量,已初始化为未定义值。

\n\n

null并且undefined\xe2\x80\x99t 没有任何属性或方法。事实上,使用.[]访问这些值的属性或方法会导致TypeError.

\n

  • 尽管在某些情况下,在更新数据存储时能够在 json 中说 key:undefined 作为隐式键删除的方法会很有用。很多时候,缺少键并不等同于它具有空值 (5认同)