php - 如何从 PHP 中的嵌套 json 对象下方访问地址元素
问题描述
我想从以 json 格式存储在 PHP 中的地址元素访问addressLine
,adminDistrict
{
"authenticationResultCode": "ValidCredentials",
"brandLogoUri": "http://dev.virtualearth.net/Branding/logo_powered_by.png",
"copyright": "Copyright © 2019 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.",
"resourceSets": [
{
"estimatedTotal": 1,
"resources": [
{
"__type": "Location:http://schemas.microsoft.com/search/local/ws/rest/v1",
"bbox": [
40.75594078242932,
-74.0022632570927,
40.76366621757067,
-73.98866508290732
],
"name": "471 W 42nd St, New York, NY 10036",
"point": {
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
]
},
"address": {
"addressLine": "471 W 42nd St",
"adminDistrict": "NY",
"adminDistrict2": "New York Co.",
"countryRegion": "United States",
"formattedAddress": "471 W 42nd St, New York, NY 10036",
"intersection": {
"baseStreet": "W 42nd St",
"secondaryStreet1": "10th Ave",
"intersectionType": "Near",
"displayName": "W 42nd St and 10th Ave"
},
"locality": "New York",
"postalCode": "10036"
},
"confidence": "High",
"entityType": "Address",
"geocodePoints": [
{
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
],
"calculationMethod": "Rooftop",
"usageTypes": [
"Display"
]
}
],
"matchCodes": [
"Good"
]
}
]
}
],
"statusCode": 200,
"statusDescription": "OK",
"traceId": "d551494203554f058cd3e2e72582f7b1|HK20271557|7.7.0.0|HK01EAP000001D0"
}
{
"authenticationResultCode": "ValidCredentials",
"brandLogoUri": "http://dev.virtualearth.net/Branding/logo_powered_by.png",
"copyright": "Copyright © 2019 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.",
"resourceSets": [
{
"estimatedTotal": 1,
"resources": [
{
"__type": "Location:http://schemas.microsoft.com/search/local/ws/rest/v1",
"bbox": [
40.75594078242932,
-74.0022632570927,
40.76366621757067,
-73.98866508290732
],
"name": "471 W 42nd St, New York, NY 10036",
"point": {
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
]
},
"address": {
"addressLine": "471 W 42nd St",
"adminDistrict": "NY",
"adminDistrict2": "New York Co.",
"countryRegion": "United States",
"formattedAddress": "471 W 42nd St, New York, NY 10036",
"intersection": {
"baseStreet": "W 42nd St",
"secondaryStreet1": "10th Ave",
"intersectionType": "Near",
"displayName": "W 42nd St and 10th Ave"
},
"locality": "New York",
"postalCode": "10036"
},
"confidence": "High",
"entityType": "Address",
"geocodePoints": [
{
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
],
"calculationMethod": "Rooftop",
"usageTypes": [
"Display"
]
}
],
"matchCodes": [
"Good"
]
}
]
}
],
"statusCode": 200,
"statusDescription": "OK",
"traceId": "d551494203554f058cd3e2e72582f7b1|HK20271557|7.7.0.0|HK01EAP000001D0"
}
解决方案
<?php
/*
if Array of JSON Object is returned then
Use following
*/
$json = '[{
"authenticationResultCode": "ValidCredentials",
"brandLogoUri": "http://dev.virtualearth.net/Branding/logo_powered_by.png",
"copyright": "Copyright © 2019 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.",
"resourceSets": [
{
"estimatedTotal": 1,
"resources": [
{
"__type": "Location:http://schemas.microsoft.com/search/local/ws/rest/v1",
"bbox": [
40.75594078242932,
-74.0022632570927,
40.76366621757067,
-73.98866508290732
],
"name": "471 W 42nd St, New York, NY 10036",
"point": {
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
]
},
"address": {
"addressLine": "471 W 42nd St",
"adminDistrict": "NY",
"adminDistrict2": "New York Co.",
"countryRegion": "United States",
"formattedAddress": "471 W 42nd St, New York, NY 10036",
"intersection": {
"baseStreet": "W 42nd St",
"secondaryStreet1": "10th Ave",
"intersectionType": "Near",
"displayName": "W 42nd St and 10th Ave"
},
"locality": "New York",
"postalCode": "10036"
},
"confidence": "High",
"entityType": "Address",
"geocodePoints": [
{
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
],
"calculationMethod": "Rooftop",
"usageTypes": [
"Display"
]
}
],
"matchCodes": [
"Good"
]
}
]
}
],
"statusCode": 200,
"statusDescription": "OK",
"traceId": "d551494203554f058cd3e2e72582f7b1|HK20271557|7.7.0.0|HK01EAP000001D0"
},
{
"authenticationResultCode": "ValidCredentials",
"brandLogoUri": "http://dev.virtualearth.net/Branding/logo_powered_by.png",
"copyright": "Copyright © 2019 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.",
"resourceSets": [
{
"estimatedTotal": 1,
"resources": [
{
"__type": "Location:http://schemas.microsoft.com/search/local/ws/rest/v1",
"bbox": [
40.75594078242932,
-74.0022632570927,
40.76366621757067,
-73.98866508290732
],
"name": "471 W 42nd St, New York, NY 10036",
"point": {
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
]
},
"address": {
"addressLine": "471 W 42nd St",
"adminDistrict": "NY",
"adminDistrict2": "New York Co.",
"countryRegion": "United States",
"formattedAddress": "471 W 42nd St, New York, NY 10036",
"intersection": {
"baseStreet": "W 42nd St",
"secondaryStreet1": "10th Ave",
"intersectionType": "Near",
"displayName": "W 42nd St and 10th Ave"
},
"locality": "New York",
"postalCode": "10036"
},
"confidence": "High",
"entityType": "Address",
"geocodePoints": [
{
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
],
"calculationMethod": "Rooftop",
"usageTypes": [
"Display"
]
}
],
"matchCodes": [
"Good"
]
}
]
}
],
"statusCode": 200,
"statusDescription": "OK",
"traceId": "d551494203554f058cd3e2e72582f7b1|HK20271557|7.7.0.0|HK01EAP000001D0"
}]';
$array = json_decode($json);
foreach($array as $sub_array) {
echo $sub_array->resourceSets[0]->resources[0]->address->addressLine . "<br/>";
echo $sub_array->resourceSets[0]->resources[0]->address->adminDistrict . "<br/>";
}
/*
And if single JSON Object is returned then
Use following
*/
$json = '{
"authenticationResultCode": "ValidCredentials",
"brandLogoUri": "http://dev.virtualearth.net/Branding/logo_powered_by.png",
"copyright": "Copyright © 2019 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.",
"resourceSets": [
{
"estimatedTotal": 1,
"resources": [
{
"__type": "Location:http://schemas.microsoft.com/search/local/ws/rest/v1",
"bbox": [
40.75594078242932,
-74.0022632570927,
40.76366621757067,
-73.98866508290732
],
"name": "471 W 42nd St, New York, NY 10036",
"point": {
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
]
},
"address": {
"addressLine": "471 W 42nd St",
"adminDistrict": "NY",
"adminDistrict2": "New York Co.",
"countryRegion": "United States",
"formattedAddress": "471 W 42nd St, New York, NY 10036",
"intersection": {
"baseStreet": "W 42nd St",
"secondaryStreet1": "10th Ave",
"intersectionType": "Near",
"displayName": "W 42nd St and 10th Ave"
},
"locality": "New York",
"postalCode": "10036"
},
"confidence": "High",
"entityType": "Address",
"geocodePoints": [
{
"type": "Point",
"coordinates": [
40.7598035,
-73.99546417
],
"calculationMethod": "Rooftop",
"usageTypes": [
"Display"
]
}
],
"matchCodes": [
"Good"
]
}
]
}
],
"statusCode": 200,
"statusDescription": "OK",
"traceId": "d551494203554f058cd3e2e72582f7b1|HK20271557|7.7.0.0|HK01EAP000001D0"
}';
$JsonData = json_decode($json);
echo $JsonData->resourceSets[0]->resources[0]->address->addressLine . "<br/>";
echo $JsonData->resourceSets[0]->resources[0]->address->adminDistrict . "<br/>";
推荐阅读
- javascript - 即使设置了 NODE_PATH 也无法在 Node 中导入全局包?
- r - 从 R 中的嵌套列表创建汇总表
- google-sheets - 如何在 =lookup 公式中使用单个单元格的集合而不是范围?
- google-bigquery - BigQuery 数据传输不完整
- lua - PlayerGui.MainGui.TwitterCodeFrame.Enter.LocalScript:14:预期的“结束”(在第 1 行关闭“功能”),得到
; (罗布洛克斯工作室) - php - 用于访问数组的 PHP 空安全运算符
- paypal - Paypal API/协议页面/隐藏收货地址块
- powerbi - Power BI - 使用多个按钮创建多个书签
- dump - 使用 marshmallow.fields 和性能转储用户数据
- postgresql - 在 postgresql 的原始文本列中使用多种日期格式转换列 to_date