1

我从backbone.js 中拉出一个对象,当我对对象进行字符串化时,我看到字符串文字

'[{"Name":"Testname","Address":"Testaddress","id":"444444444444444"}]'

但是,当我将非序列化对象分配给变量并尝试访问第 0 个元素时,我得到未定义。我希望得到对象

{"Name":"Testname","Address":"Testaddress","id":"444444444444444"}

JavaScript 不处理

[{"Name":"Testname","Address":"Testaddress","id":"444444444444444"}] 

作为对象的索引数组?

4

2 回答 2

1

要按索引访问 Backbone.Collection 的元素,请使用以下Collection#at方法:

var first = collection.at(0);

或者,您可以使用该Collection#first方法,它实际上是下划线库的一部分,但被代理到 Backbone 集合以获取语法糖:

var first = collection.first();

您在序列化 JSON 中看到数组表示的原因是,按照惯例,它会JSON.stringify查找toJSON在您提供给它的对象上调用的方法以进行字符串化,如果找到,则将使用该方法的返回值。的实现Collection#toJSON返回集合内部模型数组的克隆,因此 JSON 输出是一个数组。

于 2013-02-26T21:56:16.300 回答
0

刚试过

var arr = JSON.parse( '[{"Name":"Testname","Address":"Testaddress","id":"444444444444444"}]' );

console.log( arr[0] ); // => object

你所描述的应该工作。

于 2013-02-26T22:02:01.300 回答