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



我有一个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响应,这样您就可以使用一个对象。然后循环并在匹配时设置变量。

<?php
$response = json_decode($_POST['json-name']);
$qualificationTier = null;
foreach ($response->site->place->characteristic as $c) {
if ($c->name === 'qualificationTier') {
$qualificationTier = $c->value;
}
}

最新更新