Получить письмо из массива JSON - PullRequest
0 голосов
/ 02 февраля 2019

Пытаюсь выяснить это уже целый день.Я пытаюсь использовать API fiken.no для получения номеров клиентов.API основан на HAL + JSON, и я хочу получить доступ к данным с помощью PHP.

При создании новой учетной записи вы не получаете ответа, а только HTTP 201, поэтому чтобы получить сгенерированный номер клиента, мне нужно воспользоваться поискомконечная точка.

Эта конечная точка возвращает всех пользователей только так:

{
"_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 (вложенный массив) PHP , который выглядит как мои проблемы, но здесь ключ является постоянным вмассив JSON.Здесь это от 0 до бесконечности.

Есть ли лучший способ обработать это с помощью PHP, чем обычные практики JSON?Спасибо за любую помощь!

1 Ответ

0 голосов
/ 02 февраля 2019

Первым делом было бы декодировать 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)

...