Javascript JSON 解析错误

标签 javascript arrays angularjs json parsing

当我尝试解析 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.

最佳答案

我明白了。对于我的项目,可以根据每个参数的“类型”显示两种类型的字段,并且它们都绑定(bind)到相同的 ng-model。

即使解析可以工作,“value”属性也会被其他输入字段设置为未定义。

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

关于Javascript JSON 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343110/

相关文章:

javascript - 为什么 d3.histogram 会合并此图表的最后两个 bin?

javascript - 如何在 jquery ajax 中发送所有搜索过滤器值并获得结果?

javascript - 如何在 React JavaScript 中将 id 传递到 navlink

javascript - 如何在 asp.net 中的文本框占位符中使用 mathjax?

JavaScript 过滤数组和映射

javascript - jquery的图像预加载问题

c# - 如何在 C# 中按值而不是引用将数组保存在列表中

javascript - Ui路由器刷新问题

javascript - Angular Universal - 延迟加载问题

javascript - 如何使用多文件上传控件合并多个上传的图像?