【发布时间】:2014-11-26 16:03:28
【问题描述】:
我正在尝试确定问题所在。基本上,我将一个包含 JSON 内容的文件加载到一个主干.js 集合中。它正在正确定位文件,加载内容,我可以(通过浏览器开发人员工具)看到 12 个 JSON 对象之一是可访问的,但它缺少其他 11 个对象,看起来加载的对象是被归类为“属性”。我对backbone.js 有点陌生,我不确定我做错了什么。代码及截图如下:
我用来从文件中加载 JSON 内容的代码:
var cmd = Backbone.Model.extend({});
var cmdList = Backbone.Collection.extend({
model: cmd
});
var myCmds = new cmdList();
myCmds.fetch({
add: true,
url: "CustomFiles/Commands.txt",
success: function () {
console.log("JSON file load was successful", myCmds);
$.each(myCmds, function (key, value) {
console.log(key + ": " + value.Description);
});
},
error: function () {
console.log("There was some error in loading and processing the JSON file");
}
});
这是包含 JSON 内容的 Commands.txt 文件的缩写版本:
{
"Command": {
"build": 1,
"TouchedBy": "corpUser1",
"TouchedWhenUTC": "2013-10-24 06:58:15.5130000 +00:00",
"CreatedBy": "corpUser1",
"CreatedWhenUTC": "2013-10-24 06:58:15.5130000 +00:00",
"Active": "TRUE",
"MSRowversion": "",
"id": 1,
"Name": "Start Services",
"Description": "To start all Services",
"Type": 1,
"Data": ""
},
"Command": {
"build": 1,
"TouchedBy": "corpUser1",
"TouchedWhenUTC": "2013-10-24 06:58:15.5170000 +00:00",
"CreatedBy": "corpUser1",
"CreatedWhenUTC": "2013-10-24 06:58:15.5170000 +00:00",
"Active": "TRUE",
"MSRowversion": "",
"id": 2,
"Name": "Stop Services",
"Description": "To stop all Services",
"Type": 2,
"Data": ""
},
[9 other JSON objects (commands) - formatted exactly the same way...],
"Command": {
"build": 1,
"TouchedBy": "corpUser2",
"TouchedWhenUTC": "2014-10-30 08:48:37.0770000 +00:00",
"CreatedBy": "corpUser2",
"CreatedWhenUTC": "2014-10-30 08:48:37.0770000 +00:00",
"Active": "TRUE",
"MSRowversion": "",
"id": 28,
"Name": "Stop Services T",
"Description": "To stop all Services for T",
"Type": 2,
"Data": ""
}
}
我的 JSON 内容似乎是正确的,但正如您从开发人员工具的屏幕截图中看到的那样,它正在加载,但并未加载所有对象,我无法访问“描述”的值' 'Command' 对象的属性。
在以下屏幕截图中,您可以看到仅加载了一个命令,并将其标识为属性。我是否过度分析/过度复杂化了这一点,还是我忽略了一些简单的事情?
如何正确加载和迭代这些 JSON 对象?
更新:
我修改了 Commands.txt 文件,使“Command”键不再存在,并更改了左括号和右括号,以便对象成为数组的一部分。所以,我从这个出发:
{
"Command": {
"build": 1,
"TouchedBy": "corpUser1",
"TouchedWhenUTC": "2013-10-24 06:58:15.5130000 +00:00",
"CreatedBy": "corpUser1",
"CreatedWhenUTC": "2013-10-24 06:58:15.5130000 +00:00",
"Active": "TRUE",
"MSRowversion": "",
"id": 1,
"Name": "Start Services",
"Description": "To start all Services",
"Type": 1,
"Data": ""
},
"Command": {
"build": 1,
"TouchedBy": "corpUser1",
"TouchedWhenUTC": "2013-10-24 06:58:15.5170000 +00:00",
"CreatedBy": "corpUser1",
"CreatedWhenUTC": "2013-10-24 06:58:15.5170000 +00:00",
"Active": "TRUE",
"MSRowversion": "",
"id": 2,
"Name": "Stop Services",
"Description": "To stop all Services",
"Type": 2,
"Data": ""
},
[9 other JSON objects (commands) - formatted exactly the same way...],
"Command": {
"build": 1,
"TouchedBy": "corpUser2",
"TouchedWhenUTC": "2014-10-30 08:48:37.0770000 +00:00",
"CreatedBy": "corpUser2",
"CreatedWhenUTC": "2014-10-30 08:48:37.0770000 +00:00",
"Active": "TRUE",
"MSRowversion": "",
"id": 28,
"Name": "Stop Services T",
"Description": "To stop all Services for T",
"Type": 2,
"Data": ""
}
}
到这里:
[{
"build": 1,
"TouchedBy": "corpUser1",
"TouchedWhenUTC": "2013-10-24 06:58:15.5130000 +00:00",
"CreatedBy": "corpUser1",
"CreatedWhenUTC": "2013-10-24 06:58:15.5130000 +00:00",
"Active": "TRUE",
"MSRowversion": "",
"id": 1,
"Name": "Start Services",
"Description": "To start all Services",
"Type": 1,
"Data": ""
},
{
"build": 1,
"TouchedBy": "corpUser1",
"TouchedWhenUTC": "2013-10-24 06:58:15.5170000 +00:00",
"CreatedBy": "corpUser1",
"CreatedWhenUTC": "2013-10-24 06:58:15.5170000 +00:00",
"Active": "TRUE",
"MSRowversion": "",
"id": 2,
"Name": "Stop Services",
"Description": "To stop all Services",
"Type": 2,
"Data": ""
},
[9 other JSON objects (commands) - formatted exactly the same way...],
{
"build": 1,
"TouchedBy": "corpUser2",
"TouchedWhenUTC": "2014-10-30 08:48:37.0770000 +00:00",
"CreatedBy": "corpUser2",
"CreatedWhenUTC": "2014-10-30 08:48:37.0770000 +00:00",
"Active": "TRUE",
"MSRowversion": "",
"id": 28,
"Name": "Stop Services T",
"Description": "To stop all Services for T",
"Type": 2,
"Data": ""
}]
这解决了我的大部分问题。我仍然在访问命令的属性值之一时遇到问题,但我会努力尝试找出这部分,如果需要,我会提出一个新问题。
【问题讨论】:
-
您需要修复正在生成
Commands.txt的任何损坏的工具,以便它生成 JSON,对象数组将是合适的。要么写你自己的解析器。 -
感谢您发帖,如果我自己没有得出这个结论(一组对象),您的评论会对我有所帮助。可能会帮助其他人更快地到达那里......
标签: json backbone.js model