从 JSON 数组中获取电子邮件

Get email from JSON array

我正在尝试使用 fiken.no 的 API 来检索客户编号。 API 基于 HAL+JSON,我想使用 PHP.

访问数据

创建新帐户时,您没有收到任何响应,只有 HTTP 201,因此要获取生成的客户编号,我需要使用搜索端点。

仅限该端点 returns 所有用户都喜欢这样:

{
"_links": {
    "self": {
        "href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts"
    }
},
"_embedded": {
    "https://fiken.no/api/v1/rel/contacts": [
        {
            "_links": {
                "self": {
                    "href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts/757941482"
                }
            },
            "name": "Ola Nordmann 2",
            "email": "mail@mail.com",
            "address": {
                "country": "Norge"
            },
            "customerNumber": 10003
        },
        {
            "_links": {
                "self": {
                    "href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts/757941171"
                }
            },
            "name": "Ola Nordmann 1",
            "email": "findthis@example.com",
            "address": {
                "country": "Norge"
            },
            "customerNumber": 10002
        },
        {
            "_links": {
                "self": {
                    "href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts/756867201"
                }
            },
            "name": "Demoleverandør",
            "address": {
                "address1": "Demoveien 44",
                "address2": "",
                "postalPlace": "Oslo",
                "postalCode": "0190",
                "country": "Norge"
            },
            "supplierNumber": 20001
        },
        {
            "_links": {
                "self": {
                    "href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts/756867200"
                }
            },
            "name": "Demokunde",
            "address": {
                "address1": "Demoveien 22",
                "address2": "",
                "postalPlace": "Oslo",
                "postalCode": "0190",
                "country": "Norge"
            },
            "customerNumber": 10001
        }
    ]
}}

从这个响应中,我需要查询 f.ex 电子邮件 findthis@example.com 并从中获取整个用户对象。这包括地址数据,尤其是客户编号。我该怎么做?

我发现了这个: 这看起来像我的问题,但这里的键在 JSON 数组中是常量。这里是从 0 到无穷大。

有没有比正常 JSON 做法更好的使用 PHP 处理此问题的方法?

首先是将 JSON 解码为数组:

$resultArray = json_decode($yourJSONvariable, true);

接下来我建议将联系人数组从 JSON 数组中分离出来:

$contacts = $resultArray["_embedded"]["https://fiken.no/api/v1/rel/contacts"];

现在 $contacts 应该是 API 通话中所有联系人的数组。您可以遍历每一个以找到具有匹配电子邮件的记录,如下所示:

foreach ($contacts as $contact) {
    if ($contact["email"] == "findthis@example.com") {
        $mycontact = $contact;
        break;
    }
}

$mycontact 现在将包含具有匹配电子邮件的联系人数组,您可以使用字段名称作为数组索引来访问其各个字段(例如,$mycontact["name"]$mycontact["address"]["country"], $mycontact["_links"]["self"]["href"]).要查看数组中的所有数据,请执行 var_dump($contacts)