javascript - JSON 带有空数值? (非0)

标签 javascript json

给定一个 JSON:

[
{ "id":"A", "status": 1, "rank":1, "score":  },
{ "id":"B", "status": 1, "rank":1, "score":  }
]

由于分数为空,我的脚本失败。

给定一个 JS:

if (json[i].score) { do something } else { calculate it } 

我想保持字段,而不是使用 0。我可以使用 "score": "",但这意味着它是一个字符串(空在开始时),而我希望分数是数字(开始时为空)。所以我压入其中的数字仍然是一个数字,而不是一个字符串。

如何陈述空/未定义的数字?

<小时/>

注意:我直觉地认为这就是为什么我有时会遇到未定义

<小时/>

编辑:编辑问题是为了澄清上下文,需要检查 obj.score 是否存在,其中 0 会产生误导。

最佳答案

TL;DR:如果每个人都以零分开始,则使用 0(零)。如果您特别想说某人的分数尚未设置,请使用 null。如果不应将属性放置在特定情况下(例如甚至不应该具有“score”属性的对象),请不要定义该属性。

省略 JSON 对象中的值

嗯,在 JSON 中你不能只省略该值。它必须设置为数字(整数或 float )、对象、列表、 bool 值、null 或字符串之类的值。要了解有关语法的更多信息,请尝试此资源:http://json.org/ 。这是从该站点获取的图表,向您展示了 JSON 中对象表示的语法:

enter image description here

最流行的方法:null0(零)、未定义

通常的方法是设置null。在其他情况下,如果适用,最好使用 0(零)(例如,该字段表示“sum”)。

另一种方法是不设置该属性。反序列化后,您就可以执行测试来检查特定属性是否存在,如下所示:

  • JavaScript:

    if (typeof my_object.score !== 'undefined'){
        // "score" key exists in the object
    }
    
  • Python:

    if 'score' in my_object:
        pass  # "score" key exists in the object
    
  • PHP:

    if (array_key_exists('score', $my_object)) {
        // "score" key exists in the object
    }
    

不太一致的方法:false""

在这种情况下,有些人也接受值为false,但这是相当不一致的。对于空字符串("")也是如此。但是,在反序列化过程中,大多数编程语言都应该正确支持这两种情况。

关于javascript - JSON 带有空数值? (非0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17605839/

相关文章:

javascript - 将我的选择 ID 传递给路由 Controller 并显示给另一个 Blade 文件

javascript - 通过缩放 Canvas 单击点标签

javascript - AngularJS 未将 html 加载到 ng-view 中

javascript - jQuery Flot 图未加载(JSON 数据)

ios - Swift JSON可解码\u0000

javascript - 如何使用单个 javascript 函数运行多个倒计时?

javascript - jquery删除表行帮助

python - json.dump 不写入文件

php - 尝试获取YouTube视频标题和描述

javascript - 关于javascript文件中相对值的问题