已经尝试解决这一问题了一天。我试图用fiken.no`s API来检索customernumbers。该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,并从中获取整个用户对象。这包括地址数据,尤其是CUSTOMERNUMBER。我该怎么做呢?
我发现了这个问题:Search a key in a Json (nested array) PHP看起来像我的问题,但是这里的键在json数组中是恒定的。从0到无穷大。
有没有比普通的JSON方法更好的方法来使用PHP处理此问题? 感谢您的帮助!
答案 0 :(得分:0)
的第一件事是将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)