繁体   English   中英

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

[英]how to add an json array of object into array of objects?

对于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个对象。 有人可以解释为什么会这样吗?

您为什么不直接分配对象?

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

无需解析,直接执行即可,因为它已经是对象。 的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);

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] );
 }
}

一些观察:

  • 由于str已经是JSON object因此无需再次解析。
  • 您可以将roles直接推入available_roles数组。 无需执行这种类型的条件j % numParams == 0

DEMO

 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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM