【问题标题】:Parse JSON object with multiple arrays based on specific value根据特定值解析具有多个数组的 JSON 对象
【发布时间】:2023-02-04 05:16:11
【问题描述】:

我需要从具有多个数组的 JSON 对象中获取一些 guid。我需要一些向导,但不是全部。我正在用 Javascript 进行此操作以进行 Postman 测试。

具体来说,我需要从 user.roles.org.guid 映射一个新数组,仅用于 user.roles.role 为“教师”的 guid。

示例 JSON:

{
    "user": {
        "guid": "foobar",
        "status": "foobar",
        "dateLastModified": "foobar",
        "username": "foobar",
        "enabledUser": "foobar",
        "givenName": "foobar",
        "familyName": "foobar",
        "middleName": "foobar",
        "email": "foobar",
        "sms": "foobar",
        "roles": [
            {
                "beginDate": "foobar",
                "roleType": "foobar",
                "role": "teacher",
                "org": {
                    "href": "foobar",
                    "guid": "5C354F4D-DFD0-406D-8B83-7D5C8B64EF8B",
                    "type": "org"
                }
            },
            {
                "beginDate": "foobar",
                "roleType": "foobar",
                "role": "teacher",
                "org": {
                    "href": "foobar",
                    "guid": "E2FECF7B-DA7B-4534-B467-337DEA01118C",
                    "type": "org"
                }
            },
            {
                "beginDate": "foobar",
                "roleType": "foobar",
                "role": "aide",
                "org": {
                    "href": "foobar",
                    "guid": "E2F2B7C5-37A1-4D6C-8BB8-64E45CF71030",
                    "type": "org"
                }
            }
        ],
         "grades": [
            "12",
            "12"
        ]
    }
}

我已经为创建一个新数组全部user.roles.org.guid 下的 guids:

var data = JSON.parse(responseBody)
var objectType = (data.user)
var guids = objectType.roles.org.map(guids => guids.guid)

...但我不确定如何将其限制为教师的角色。谢谢!

【问题讨论】:

  • 使用filter() 仅选择role.role == 'teacher' 所在的角色

标签: javascript arrays postman


【解决方案1】:

为此,您需要 filter() 然后 map() 过滤结果。

let data = JSON.parse(responseBody);
let teacherGuids = data.user.roles
  .filter(role => role.role === "teacher")
  .map(teacherRole => teacherRole.org.guid);

【讨论】:

    【解决方案2】:
    data.user.roles.filter((e)=>{return e.role == "teacher"}).map((e)=>{return e.org.guid});
    

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      相关资源
      最近更新 更多