将对象添加到JSON

时间:2014-01-04 17:09:54

标签: javascript json

我有一个看起来像这样的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);

现在一切都和预期的一样!

3 个答案:

答案 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();'>

我仍然看不到捕获的位置。