开发者问题收集

javascript 数组中的 JSON 导致错误无法读取属性

2014-07-22
1362

我有一些JavaScript一年没有变化,突然间破裂了。因此,我的第一个想法是必须是与数据有关的。在查看数据时,似乎一年多的结构没有变化。

这是我的JS,突然进行了很长时间的运行良好。此错误:“未经定义的未定义类型错误:无法读取属性BillingCycletoryId。”该错误在下面的“ value.BillingCyclethistoryId”上触发了...

681088008

当我将JSON粘贴到JSONLINT中时,它会引发错误,这对我来说是没有意义的错误:

556959134

“在此处输入图像说明”

< P>知道这里发生了什么?

3个回答

您的代码是有效的 javascript,但并非其他人指出的严格有效的 JSON。

在您的屏幕截图中,history 变量看起来并不像它应该的那样(它的长度应该是 1)。您可能只需要重命名它:“history”似乎是 Chrome 控制的全局变量。如果 Chrome 最近添加了此行为,那么这将解释您的代码突然中断的原因。

请参阅 http://www.javascripter.net/faq/reserved.htm

“history”严格来说不是保留字,但最好还是避免将其用作全局变量名。(如果您可以避免使用全局变量,那么使用全局变量是不明智的。)

swilson
2014-07-22

jsonlint 错误是由于您没有将密钥括在引号中。这样可以正常工作,但 jsonlint 不喜欢它。您可以从此处的常见问题解答中看到这一点: http://jsonlint.com/#

Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

You probably have an extra comma at the end of your list. Something like: [ "a", "b", ] You also may have not enclosed your collection keys in quotes. Proper format for a collection is: { "key": "value" }

cnaut
2014-07-22

字符串和变量应该放在双引号中,请尝试以下操作:

[
    {
        "BillingCycleHistoryID": 339,
        "BillingCycleDate": "7/18/2014",
        "StartTime": "7/18/2014",
        "PercentComplete": 100,
        "EndTime": "7/18/2014",
        "HoursRan": 0.16,
        "StartedBy": "ADMIN"
    }
]
herriekrekel
2014-07-22