从json响应中取出key作为Value

时间:2016-09-28 09:57:11

标签: angularjs json angularjs-ng-repeat ng-repeat key-value

JSON:

    {
      "json": {
        "response": {
          "servicetype": "1",
          "functiontype": "10011",
          "statuscode": "0",
          "statusmessage": "Success",
          "data": {
            "unassignedroles": [
              {"roleid":"1",
                "roleinformation": {
                  "QA": [
                    {
                      "White Box Testing": 0
                    },
                    {
                     "Black Box Testing": 10
                    }

                  ]
                }
              },
              {
`              "roleid":"2"`,
                "roleinformation": {
                  "1": [
                    {
                      "A": 0
                    }
                  ]
                }
              },
              { 
                "roleid":"3",
                "roleinformation": {
                  "D": [
                    {
                      "B": 0
                    }
                  ]
                }
              }
            ]
          }
        }
      }
    }

我需要将密钥作为表格中的值传递。我存储了$scope.roleInfo = response.json.data.unassignedRoles[i].roleinformation;

现在从那个$scope.roleInfo,我有

QA  [
            {
              "White Box Testing": 0
            },
            {
             "Black Box Testing": 10
            }

          ]

如何根据所选的roleid动态地在表中提供Key QA,White Box Testing和Black Box测试。对于每个角色ID,我将使用不同的密钥名称。

2 个答案:

答案 0 :(得分:0)

在您的示例中,roleInformation子对象(因此$scope.roleInfo对象)只有一个键,所以如果您这样做:

for (i in $scope.roleInfo)
    console.log(i) // i == "QA"

“循环”只会运行一次,您可以提取所需的值。

所以同样的方式,你可以

<tr ng-repeat="(key, value) in roleInfo">
    <td>{{ key }}</td>

    <td ng-repeat="details in value">
        <p ng-repeat"(subkey, subvalue) in details">{{ subkey }} : {{ subvalue }}</p>
    </td>
</tr>

答案 1 :(得分:0)

将您的JSON分配给范围对象,并按以下方式对其进行迭代。

angular.forEach($ scopeObject,function(value,Key){ }

你会得到&#34; Key&#34;迭代发生时。 通过这种方式,您可以过滤&#34;键&#34;来自JSON列表。