Javascript/Jquery将json对象推送到数组中

Javascript/Jquery将json对象推送到数组中,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我有一个json对象来自jquery中的$.post。 为了循环并存储clientside数据,我想将其添加到一个数组中。对于返回的每个搜索结果,我想“附加”数组,使其增长 这是我的json: { "companies": [ { "companyid": "115", "saved": false, "orgnumber": "010101010", "companyname": "TestCompany", "header": "header info" },

我有一个json对象来自jquery中的
$.post
。 为了循环并存储clientside数据,我想将其添加到一个数组中。对于返回的每个搜索结果,我想“附加”数组,使其增长

这是我的json:

    {
"companies": [
{
  "companyid": "115",
  "saved": false,
  "orgnumber": "010101010",
  "companyname": "TestCompany",
  "header": "header info"
  },      
  {
  "companyid": "116",
  "saved": false,
  "orgnumber": "010101010",
  "companyname": "TestCompany",
  "header": "header info"
  } ]
      }
这就是我到目前为止提出的数据是json 从post ajax请求提交回。Obj只是一个保存数组的对象 我在代码中进一步声明了这一点。obj.companys=新数组()

下一部分我需要循环数组。试着这样做

     $.each(obj.companies, function(i, item) {      

       // Does not alert correctly.
       alert(item.header);

     });
所以我需要将完整的json对象推送到数组中。但是我不能在循环中提醒item.header,我如何才能做到这一点

编辑: 谢谢大家。对不起,我的问题不够详细。 我最终做了这样的事:

        getcompanies: function() {
          obj = this;
          $.post('api/finder/result.php', {}, function(data) {
                $.each(data.companies, function(i, item) {      
                    obj.companies.push(item);
                });             
                obj.loadcompanies();                        
          }, "json");
       },


        loadcompanies: function() {
           $.each(this.companies, function(i, item) {       
             alert(item.header);
          }
        }

我认为,负责构建JSON对象(通过Ajax返回)的服务器端代码存在问题。正确的JSON应该如下所示:

{
    "companies": [
        {
            "companyid": "115",
            "saved": false,
            "orgnumber": "010101010",
            "companyname": "TestCompany",
            "header": "header info"
        },
        {
            "companyid": "116",
            "saved": false,
            "orgnumber": "010101010",
            "companyname": "TestCompany",
            "header": "header info"
        }
    ]
}
请注意,只有一个名为“companys”的键包含一个对象数组。请更正服务器端代码以获得有效的JSON。您可以使用免费的在线JSON验证器工具,例如验证JSON对象

现在,一旦您从服务器得到这样的响应;您只需执行以下步骤即可获得companys数组(以下代码将进入
$.post
成功处理程序):


我希望这会对您有所帮助。

如果您想将新公司添加到您的公司阵列中,您应该

var json_obj =   {
"companies": [
{
  "companyid": "115",
  "saved": false,
  "orgnumber": "010101010",
  "companyname": "TestCompany",
  "header": "header info"
  },
  {
  "companyid": "116",
  "saved": false,
  "orgnumber": "010101010",
  "companyname": "TestCompany",
  "header": "header info"
  } ]
  };

  //adding new company into your companies array
  json_obj.companies.push({
     "companyid":"117",
     "saved" : false,
     "orgnumber": "20120313",
     "companyname":"anotherCompany",
     "header":"another header info"
  });

  //if you want to loop through your companies list you can:

  json_obj.companies.map(function ( obj ){
     console.log(obj.companyid);
     console.log(obj.companyname);
     etc..
  });

我不太清楚你想做什么或为什么。为什么在尝试将json添加到一个与刚才字符串化的json结构相似的对象之前要对其进行字符串化?你真正想要的结构是什么?实际问题是什么?另外,演示的JSON是无效的。只要你的
obj
拥有你所引用的数组(
{sresult:{companys:[]}}
),你发布的内容应该循环到你推送的数据上,但是您正在推送的数据将是一个
字符串
,包含JSON中的所有内容。当然有些地方出错了,否则我不会问这个问题。是的,正确,我发布了格式不正确的JSON。我注意到我没有得到问题中描述的json。谢谢!很棒的东西,它帮助了我,我最终做了一个循环,并将它推到了公司阵列中。
var jsonResp = JSON.parse(postResponse); //postResponse is the success resp of $.post
var companiesArray =  jsonResp.companies;
$.each(companiesArray , function (index, valueObj){
    var compId = valueObj.companyid;
    var isSaved = valueObj.saved;
});
var json_obj =   {
"companies": [
{
  "companyid": "115",
  "saved": false,
  "orgnumber": "010101010",
  "companyname": "TestCompany",
  "header": "header info"
  },
  {
  "companyid": "116",
  "saved": false,
  "orgnumber": "010101010",
  "companyname": "TestCompany",
  "header": "header info"
  } ]
  };

  //adding new company into your companies array
  json_obj.companies.push({
     "companyid":"117",
     "saved" : false,
     "orgnumber": "20120313",
     "companyname":"anotherCompany",
     "header":"another header info"
  });

  //if you want to loop through your companies list you can:

  json_obj.companies.map(function ( obj ){
     console.log(obj.companyid);
     console.log(obj.companyname);
     etc..
  });