如何在 PHP 中从下面的嵌套 JSON 对象访问地址元素



我想从以json格式存储在PHP中的地址元素adminDistrict访问addressLine

{
  "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"
}
您需要

通过将其分配给变量来访问它,例如

let a = { "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" }

然后像这样访问它

console.log(a.resourceSets[0].resources[0].address)
<?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/>";

最新更新