【问题标题】:Javascript JSON Parsing Bug [closed]Javascript JSON解析错误[关闭]
【发布时间】:2016-05-22 10:51:09
【问题描述】:

当我尝试解析 JSON 数组的字符串表示时,我遇到了一个非常奇怪的错误。

这是字符串:

[{"name":"param1","type":"text","label":"Param1","value":"Wowzers"},{"name":"param2","type":"text","label":"Param2","value":"Awesomesauce"}]

JSON 似乎没有错误或格式错误,但由于某种原因,当我在该字符串上调用 JSON.parse() 时。两个“值”属性都设置为“未定义”。

关于这一切的最奇怪的部分是,在另一个例子中,JSON 解析工作正常。这是另一个实例的字符串。

[{"name":"start","type":"date","label":"Start Date","value":"2016-02-11T05:00:00.000Z","format":"EEEE, MMMM dd yyyy, h:mm a"},{"name":"finish","type":"date","label":"End Date","value":"2016-02-13T05:00:00.000Z","format":"EEEE, MMMM dd yyyy, h:mm a"}]

使用此代码,我可以访问值,并且返回的对象数组具有等同于正确值的值属性。所以它解析正确。

因此,对于第一个字符串,值返回为未定义,但是当我尝试使用下面的代码访问该值时,它可以工作。我可以记录这些值,即使它们在技术上不存在于数组中。

    for (var i = 0; i < $scope.templateParams.length; i++) {
        var msg = $scope.templateParams[i];
        $log.info(msg);
        $log.info(msg.value);
    }

这给出:

Object { name: "param1", type: "text", label: "Param1", value: "Wowzers" }
Wowzers 
Object { name: "param2", type: "text", label: "Param2", value: "Awesomesauce" } 
Awesomesauce

我真的对此一无所知,并且尝试了多种解决方法,但无法解决任何问题。将不胜感激。

更新:

Here is the console output. On the right I have one of the objects from the parsed array selected. As you can see the value is undefined, but for some reason I can still access in some parts of my code.

【问题讨论】:

  • 你在什么引擎上运行这个?节点 0.10 中的快速测试使两个值参数保持不变。在 Chrome 中也是如此。
  • 你在哪里看到他们undefined?您是如何尝试访问它们以获取undefined 的?如果您的 $log.info(msg.value); 打印出正确的值,则意味着 JSON 和 JSON.parse() 没问题。
  • 那么问题是什么...?也许为我们提供重现问题的完整代码。
  • 在您将value 属性记录为具有正确值之后,可能会将其设置为undefined。您需要发布更多代码,显示您在 html 模板中引用 value 的位置以及您可能在做什么。
  • @BradHoffman 在我看来,在您登录后,它只是在更改 value 的值。

标签: javascript arrays angularjs json parsing


【解决方案1】:

我想通了。对于我的项目,可以根据每个参数的“类型”显示两种类型的字段,它们都绑定到同一个 ng-model。

即使解析会起作用,“值”属性也会被其他输入字段设置为未定义。

感谢大家的帮助,很抱歉我没有尽我所能描述性。我不完全理解发生了什么以及如何解释它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 2014-01-04
    • 1970-01-01
    • 2017-02-22
    • 2020-11-11
    • 1970-01-01
    • 2014-11-22
    相关资源
    最近更新 更多