如何将json对象数组添加到对象数组中?

时间:2017-02-13 06:19:30

标签: javascript json

对于json对象:

 var str={  
  "roles":[
            {
                "roleId":"Abcd",
                "envRoleName": "0101",
                "roleName": "Admin",
                "envCode":"HosJ",
                "envName":"UoH"
            },
            {
                "roleId":"efgh",
                "envRoleName": "0102",
                "roldeName": "User",
                "envCode":"HosJ",
                "envName":"HosJ"
            }
        ]
       }

我有一个数组const available_roles: Role[] = []

我试图将json数组中的每个对象插入到Role[]

var json = JSON.parse(str); numParams = Object.keys(json.roles[0]).length;

for(j = 0 ; j < json.roles.length ; j++){
   if(j % numParams == 0){
      available_roles.push ( json.roles[j] );
   }
 }

available_roles数组中填充了10个对象,而不仅仅是2个对象。有人可以解释为什么会这样吗?

4 个答案:

答案 0 :(得分:0)

为什么不直接分配对象?

var json = JSON.parse(str);
for(j = 0 ; j < json.roles.length ; j++) {
  available_roles.push ( json.roles[j] );
}

答案 1 :(得分:0)

无需解析,只需将其直接用于其已经的对象。JsFiddle

var str={  
  "roles":[
            {
                "roleId":"Abcd",
                "envRoleName": "0101",
                "roleName": "Admin",
                "envCode":"HosJ",
                "envName":"UoH"
            },
            {
                "roleId":"efgh",
                "envRoleName": "0102",
                "roldeName": "User",
                "envCode":"HosJ",
                "envName":"HosJ"
            }
        ]
       }


var availableuser = [];
for(j = 0 ; j < str.roles.length ; j++)
             {

                     console.log(str.roles[j])
                     availableuser.push(str.roles[j]);

             }

             console.log(availableuser);

答案 2 :(得分:0)

str已经是JSON对象。 您可以直接使用它而无需解析:

var numParams = Object.keys(str.roles[0]).length;
for(j = 0 ; j < str.roles.length ; j++)
{
 if(j % numParams == 0){
     available_roles.push ( str.roles[j] );
 }
}

答案 3 :(得分:0)

一些观察结果:

  • 由于str已经是JSON object,因此无需再次解析它。
  • 您可以将roles推送到available_roles阵列中。无需执行此类条件j % numParams == 0

<强>样本

&#13;
&#13;
var str = {
	"roles": [{
		"roleId": "Abcd",
		"envRoleName": "0101",
		"roleName": "Admin",
		"envCode": "HosJ",
		"envName": "UoH"
	}, {
		"roleId": "efgh",
		"envRoleName": "0102",
		"roldeName": "User",
		"envCode": "HosJ",
		"envName": "HosJ"
	}]
};

var json = str;
var available_roles = [];

for(j = 0 ; j < json.roles.length ; j++){
      available_roles.push(json.roles[j]);
 }
 
console.log(available_roles);
&#13;
&#13;
&#13;