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

时间:2019-03-28 12:52:12

标签: php json

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

{
  "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"
}

2 个答案:

答案 0 :(得分:0)

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

console.log(a.resourceSets[0].resources[0].address)

然后像这样访问它

home.js

答案 1 :(得分:0)

<?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/>";