我有一个看起来像这样的JSON:
{
"__v":0,
"_id":"526a7b9c1affd1401d000001",
"ranStr":"azsuC2Ers0qTEcpzS8Jrs1pZ7MQH0goa",
"userId":{
"username":"t",
"_id":"51e11b28418dcfd01f000002"
},
"meta":{
"numberComments":0,
"favs":0,
"views":112
},
"enddate":"2014-01-31T00:00:00.000Z",
"startdate":"2013-10-25T00:00:00.000Z",
"comments":[],
"categories":[],
"fileurl":[],
"telephone":"1234567890"
}
当我向其添加一个对象时:
addObj[obj.length] = saveobject;
之前的内容已被替换。
当我从中制作一个数组并推送对象时:
addObj = [loadedJSON];
addObj.push(saveObj);
我在第一次
之后得到这个 [Object]
在第二次这么好的票价之后
[Object, Object]
并且在第三次之后它变得搞砸了
[Array(2), Object]
我想念什么?
我希望有人可以帮忙解决这个问题吗?
我希望它的样子是这样的。
[Object, Object, Object, ...and so on]
修改
更具体 当我添加一个新的Object时,我将JSON文件加载到一个变量中,然后我尝试添加新的Object。
哪个适用于前两个对象,但第三个对象被添加到第一个对象,以便我得到这个结果。
[Array(2), Object]
我不希望它像这样嵌套!但我怎么得到这样的呢?
[Object, Object, Object].
修改
所以最后你们都是对的我只是在我第二次加载它时混合了阵列,现在每件事都很好,谢谢你指出我正确的方向。
第一次:
var a= [];
var b= {};
b= 'some things';
a.push(b);
和wenn a.length!= null
b= 'the rest';
a.push(b);
现在一切都和预期的一样!
答案 0 :(得分:1)
检查它是否是一个数组:
Array.isArray(loadedJSON) //true
这样做:
loadedJSON.push(saveObj);
如果它不是数组,则将其推送到数组:
var myarray = [];
myarray.push(loadedJSON);
然后推送你的另一个对象:
myarray.push(saveObj);
等等:
myarray.push(otherObj);
答案 1 :(得分:1)
我对你真正想要的东西有点不清楚,但基于一点推测,我能够为你编写以下代码。我希望这能解决你的问题。
var a ={
"__v":0,
"_id":"526a7b9c1affd1401d000001",
"ranStr":"azsuC2Ers0qTEcpzS8Jrs1pZ7MQH0goa",
"userId":{
"username":"t",
"_id":"51e11b28418dcfd01f000002"
},
"meta":{
"numberComments":0,
"favs":0,
"views":112
},
"enddate":"2014-01-31T00:00:00.000Z",
"startdate":"2013-10-25T00:00:00.000Z",
"comments":[],
"categories":[],
"fileurl":[],
"telephone":"1234567890"
};
var b ={
"__v":0,
"_id":"526a7b9c1affd1401d000001",
"ranStr":"azsuC2Ers0qTEcpzS8Jrs1pZ7MQH0goa",
"userId":{
"username":"t",
"_id":"51e11b28418dcfd01f000002"
},
"meta":{
"numberComments":0,
"favs":0,
"views":112
},
"enddate":"2014-01-31T00:00:00.000Z",
"startdate":"2013-10-25T00:00:00.000Z",
"comments":[],
"categories":[],
"fileurl":[],
"telephone":"1234567890"
};
var c ={
"__v":0,
"_id":"526a7b9c1affd1401d000001",
"ranStr":"azsuC2Ers0qTEcpzS8Jrs1pZ7MQH0goa",
"userId":{
"username":"t",
"_id":"51e11b28418dcfd01f000002"
},
"meta":{
"numberComments":0,
"favs":0,
"views":112
},
"enddate":"2014-01-31T00:00:00.000Z",
"startdate":"2013-10-25T00:00:00.000Z",
"comments":[],
"categories":[],
"fileurl":[],
"telephone":"1234567890"
};
var ObjArr = [];
ObjArr.push(a);
ObjArr.push(b);
ObjArr.push(c);
console.log(ObjArr);
这是它的小提琴=> http://jsfiddle.net/rB3Un/
答案 2 :(得分:1)
据我了解,这与JSON无关。
似乎你想要一个存储给定对象的连续实例的数组(恰好在某些时候用JSON编码,但对于手头的问题,我们可能不在乎)。
首先,创建一个草料阵列 然后将每个新实例推入其中。
var storage = []; // your storage array, initially empty
// ....
while (some_guy_wants_to_send_me_something ())
{
var new_object = get_what_the_guy_sent_me_that_happens_to_be_JSON_encoded();
storage.push (new_object);
}
编辑:
如果您使用按钮:
var storage = []; // your storage array, initially empty
// ....
function add_whatever_object ()
{
var new_object = get_what_the_guy_sent_me_that_happens_to_be_JSON_encoded();
storage.push (new_object);
}
// HTML
<button type="button" onclick='add_whatever_object();'>
我仍然看不到捕获的位置。