繁体   English   中英

需要使用 JSON 响应从 POST 请求中提取数据

[英]Need to extract data from POST request with JSON response

我有一个 JSON 响应,我正在尝试从中收集数据。 大多数数据是不需要的,但它的结构方式我很难弄清楚如何获取我需要的数据。 字符串和值配对有点奇怪。

我需要能够使用 PHP 提取数据,并且我需要来自特征字段的信息。 具体来说,我需要提取“qualificationTier”的值。

我将使用什么来从 JSON 响应中提取该字符串/值?

{
    "externalId": "testinc-334",
    "site": [
        {
            "id": "site-281",
            "href": "qualification/site-281",
            "description": "Service Qualification Successful",
            "interactionDate": "2022-01-22T21:09:53.843Z",
            "interactionDateComplete": "2022-01-22T21:09:59.873Z",
            "interactionStatus": "Success",
            "place": {
                "id": "00000TBKM3",
                "href": "site/00000TBKM3",
                "characteristic": [
                    {
                        "name": "latitude",
                        "value": "32.98972"
                    },
                    {
                        "name": "longitude",
                        "value": "-117.271838"
                    },
                    {
                        "name": "region",
                        "value": "INREGION"
                    },
                    {
                        "name": "npa",
                        "value": "858"
                    },
                    {
                        "name": "nxx",
                        "value": "720"
                    },
                    {
                        "name": "lata",
                        "value": "732"
                    },
                    {
                        "name": "swCLLI",
                        "value": "DLMRCA12"
                    },
                    {
                        "name": "buildingCLLI",
                        "value": "SOBHCAWE"
                    },
                    {
                        "name": "ILECVendorName",
                        "value": "PACIFIC BELL"
                    },
                    {
                        "name": "affiliateName",
                        "value": "AT&T California"
                    },
                    {
                        "name": "unitType",
                        "value": "STE"
                    },
                    {
                        "name": "unitValue",
                        "value": "200"
                    },
                    {
                        "name": "standardAddress",
                        "value": "215 S HIGHWAY 101 STE 200,SOLANA BEACH,CA,92075-1847"
                    },
                    {
                        "name": "qualificationTier",
                        "value": "Tier 2"
                    },
                    {
                        "name": "fiberFastQualIndicator",
                        "value": "Y"
                    },
                    {
                        "name": "fiberStatus",
                        "value": "Fiber Lit"
                    }
                ]
            },
            "serviceAvailability": {
                "service": [
                    {
                        "id": "adi0001",
                        "href": "/service/adi0001",
                        "name": "Customer Managed ADI",
                        "availability": "available",
                        "serviceabilityDate": "2022-01-22T21:09:59.880Z",
                        "serviceSpecification": [
                            {
                                "id": "miseth0000002uo",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000002uo",
                                "name": "Customer Managed ADI 2 Mbps Ethernet (Optical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "2"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "2"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Optical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000002ue",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000002ue",
                                "name": "Customer Managed ADI 2 Mbps Ethernet (Electrical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "2"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "2"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Electrical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000005uo",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000005uo",
                                "name": "Customer Managed ADI 5 Mbps Ethernet (Optical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "5"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "5"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Optical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000005ue",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000005ue",
                                "name": "Customer Managed ADI 5 Mbps Ethernet (Electrical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "5"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "5"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Electrical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000010uo",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000010uo",
                                "name": "Customer Managed ADI 10 Mbps Ethernet (Optical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "10"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "10"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Optical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000010ue",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000010ue",
                                "name": "Customer Managed ADI 10 Mbps Ethernet (Electrical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "10"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "10"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Electrical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000020uo",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000020uo",
                                "name": "Customer Managed ADI 20 Mbps Ethernet (Optical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "20"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "20"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Optical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000020ue",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000020ue",
                                "name": "Customer Managed ADI 20 Mbps Ethernet (Electrical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "20"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "20"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Electrical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000050uo",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000050uo",
                                "name": "Customer Managed ADI 50 Mbps Ethernet (Optical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "50"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "50"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Optical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000050ue",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000050ue",
                                "name": "Customer Managed ADI 50 Mbps Ethernet (Electrical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "50"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "50"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Electrical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            {
                                "id": "miseth0000100uo",
                                "availability": "available",
                                "href": "/serviceSpecification/miseth0000100uo",
                                "name": "Customer Managed ADI 100 Mbps Ethernet (Optical)",
                                "characteristic": [
                                    {
                                        "name": "serviceCode",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "accessType",
                                        "value": "fiber"
                                    },
                                    {
                                        "name": "serviceType",
                                        "value": "Symmetric"
                                    },
                                    {
                                        "name": "speedUnit",
                                        "value": "Mbps"
                                    },
                                    {
                                        "name": "downloadSpeed",
                                        "value": "100"
                                    },
                                    {
                                        "name": "uploadSpeed",
                                        "value": "100"
                                    },
                                    {
                                        "name": "connectivity",
                                        "value": "Optical"
                                    },
                                    {
                                        "name": "productAbbreviation",
                                        "value": "ADI"
                                    },
                                    {
                                        "name": "fiberFastQualType",
                                        "value": "ONNET"
                                    }
                                ]
                            },
                            
                            
                            ```

检查这是否有效。

<?php

$data = json_decode($your_json);

$qualificationTier = "qualificationTier"; 

// qualificationTier name is at position 13 in characteristic array

$QualificationTierName = $data->site->place->characteristic[13]->name;

$QualificationTierValue = "";

// Confirm indeed if the string name at position 13 in characteristics is indeed qualificationTier before retrieving the value at the same position
if(strcmp($qualificationTier, $QualificationTierName) == 0 ){

    // qualificationTier value is at position 13 in characteristic array
    $QualificationTierValue = $data->site->place->characteristic[13]->value;
    echo "QualificationTier Name : " + $QualificationTierName; 
    echo "QualificationTier Value : " + $QualificationTierValue;
}

?>

一种简单的方法是循环数组并在名称与您的字段匹配时获取值。 您应该首先解码 json 响应,以便您可以使用 object。 然后在匹配时循环并设置变量。

<?php

$response = json_decode($_POST['json-name']);

$qualificationTier = null;

foreach ($response->site->place->characteristic as $c) {
    if ($c->name === 'qualificationTier') {
        $qualificationTier = $c->value;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM