php - 从 PHP JSON 响应中获取单个字段
问题描述
我有一个通过注册标记获取车辆数据的 api。
JSON 结果显示了所有字段的长列表。我只想得到一两个字段。例如Make
和Model
$curl = curl_init();
$ApiKey = "xxxx-xxxx-xxxx-xxx";
$url = "https://uk1.ukvehicledata.co.uk/api/datapackage/%s?v=2&api_nullitems=1&key_vrm=%s&auth_apikey=%s";
$url = sprintf($url, "VehicleData", "AK18OKJ", $ApiKey);
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET"
));
$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
echo"<pre>";
var_dump(json_decode($response, true));
echo"</pre>";
这是我返回的原始 JSON
{
"BillingAccount": {
"AccountType": "Trial",
"AccountBalance": 999.99,
"TransactionCost": 999.99,
"ExtraInformation": {}
},
"Request": {
"RequestGuid": "a70b0a56-2dfb-4a8e-887f-ad5928be7908",
"PackageId": "f66badad-d49d-4489-8322-8a97bb650596",
"PackageVersion": 2,
"ResponseVersion": 2,
"DataKeys": {
"Vrm": "AK18OKJ"
}
},
"Response": {
"StatusCode": "Success",
"StatusMessage": "Success",
"StatusInformation": {
"Lookup": {
"StatusCode": "Success",
"StatusMessage": "Success",
"AdviceTextList": []
}
},
"DataItems": {
"TechnicalDetails": {
"Dimensions": {
"UnladenWeight": 1715,
"RigidArtic": "RIGID",
"BodyShape": "NA",
"PayloadVolume": null,
"PayloadWeight": null,
"Height": 1404,
"NumberOfDoors": 5,
"NumberOfSeats": 5,
"KerbWeight": 1715,
"GrossTrainWeight": null,
"FuelTankCapacity": 58,
"LoadLength": null,
"DataVersionNumber": null,
"WheelBase": 2826,
"CarLength": 4781,
"Width": 1866,
"NumberOfAxles": 2,
"GrossVehicleWeight": 2305,
"GrossCombinedWeight": null
},
"Safety": {
"EuroNcap": {
"Child": null,
"Adult": null,
"Pedestrian": null
}
},
"General": {
"Engine": {
"FuelCatalyst": "C",
"Stroke": 86,
"PrimaryFuelFlag": "Y",
"ValvesPerCylinder": 4,
"Aspiration": "TURBO",
"FuelSystem": "P DI Turbo Cat Euro 6",
"NumberOfCylinders": 6,
"CylinderArrangement": "V",
"ValveGear": "DOHC",
"Location": "FRONT",
"Description": null,
"Bore": 84,
"Make": "AUDI",
"FuelDelivery": "Direct Injection"
},
"PowerDelivery": "NORMAL",
"TypeApprovalCategory": "M1",
"ElectricVehicleBattery": {
"Capacity": null,
"ChargePort": null,
"ChargeTime": null,
"Type": null
},
"SeriesDescription": "B9",
"DriverPosition": "R",
"DrivingAxle": "4X4",
"DataVersionNumber": null,
"EuroStatus": "6",
"IsLimitedEdition": false
},
"Performance": {
"Torque": {
"FtLb": 442.8,
"Nm": 600,
"Rpm": 1900
},
"NoiseLevel": null,
"DataVersionNumber": null,
"Power": {
"Bhp": 443.9,
"Rpm": 5700,
"Kw": 331
},
"MaxSpeed": {
"Kph": 250,
"Mph": 155
},
"Co2": 199,
"Particles": null,
"Acceleration": {
"Mph": 4,
"Kph": null,
"ZeroTo60Mph": 4,
"ZeroTo100Kph": null
}
},
"Consumption": {
"ExtraUrban": {
"Lkm": 7.2,
"Mpg": 39.2
},
"UrbanCold": {
"Lkm": 11.5,
"Mpg": 24.6
},
"Combined": {
"Lkm": 8.8,
"Mpg": 32.1
}
}
},
"ClassificationDetails": {
"Smmt": {
"Make": "AUDI",
"Mvris": {
"ModelCode": "HQZ",
"MakeCode": "M3"
},
"Trim": "RS 4 TFSI QUATTRO",
"Range": "A4"
},
"Dvla": {
"Model": "RS 4 TFSI QUATTRO AUTO",
"Make": "AUDI"
}
},
"VehicleStatus": {
"MotVed": {
"VedRate": {
"FirstYear": {
"SixMonth": null,
"TwelveMonth": 1280
},
"PremiumVehicle": {
"YearTwoToSix": {
"TwelveMonth": 465,
"SixMonth": 255.75
}
},
"Standard": {
"SixMonth": 79.75,
"TwelveMonth": 145
}
},
"VedCo2Emissions": 199,
"MotDue": null,
"VedBand": null,
"VedCo2Band": "K",
"TaxDue": null,
"Message": null,
"VehicleStatus": null
}
},
"VehicleHistory": {
"V5CCertificateCount": 0,
"PlateChangeCount": 0,
"NumberOfPreviousKeepers": 0,
"V5CCertificateList": [],
"KeeperChangesCount": 0,
"VicCount": 0,
"ColourChangeCount": null,
"ColourChangeList": null,
"KeeperChangesList": null,
"PlateChangeList": [],
"VicList": null
},
"VehicleRegistration": {
"DateOfLastUpdate": "2020-01-17T20:31:43",
"Colour": "GREY",
"VehicleClass": "Car",
"CertificateOfDestructionIssued": false,
"EngineNumber": "DECA008416",
"EngineCapacity": "2894",
"TransmissionCode": null,
"Exported": false,
"YearOfManufacture": "2018",
"WheelPlan": "2 AXLE RIGID BODY",
"DateExported": null,
"Scrapped": false,
"Transmission": null,
"DateFirstRegisteredUk": "2018-06-16T00:00:00",
"Model": "RS 4 TFSI QUATTRO AUTO",
"GearCount": 8,
"ImportNonEu": false,
"PreviousVrmGb": null,
"GrossWeight": 2305,
"DoorPlanLiteral": "ESTATE",
"MvrisModelCode": "HQZ",
"Vin": "Contact your account manager for access to the full VIN value.",
"Vrm": "AK18OKJ",
"DateFirstRegistered": "2018-06-16T00:00:00",
"DateScrapped": null,
"DoorPlan": "06",
"YearMonthFirstRegistered": "2018-06",
"VinLast5": "02977",
"VehicleUsedBeforeFirstRegistration": false,
"MaxPermissibleMass": 2305,
"Make": "AUDI",
"MakeModel": "AUDI RS 4 TFSI QUATTRO AUTO",
"TransmissionType": "Semi-Automatic",
"SeatingCapacity": 5,
"FuelType": "PETROL",
"Co2Emissions": 200,
"Imported": false,
"MvrisMakeCode": "M3",
"PreviousVrmNi": null,
"VinConfirmationFlag": null
},
"SmmtDetails": {
"Range": "A4",
"FuelType": "PETROL",
"EngineCapacity": "2894",
"MarketSectorCode": "AA",
"CountryOfOrigin": "GERMANY",
"ModelCode": "459",
"ModelVariant": "RS 4 TFSI QUATTRO",
"DataVersionNumber": null,
"NumberOfGears": 8,
"NominalEngineCapacity": 3,
"MarqueCode": "MT",
"Transmission": "AUTOMATIC",
"BodyStyle": "ESTATE",
"VisibilityDate": "02/10/2017",
"SysSetupDate": "02/10/2017",
"Marque": "AUDI",
"CabType": "NA",
"TerminateDate": null,
"Series": "B9",
"NumberOfDoors": 5,
"DriveType": "4X4"
}
}
}
}
解决方案
首先,您必须将 JSON-String 解码为关联数组。您可以在这里阅读:https ://www.w3schools.com/php/php_arrays_associative.asp
$assoc_array = json_decode($response, true); // set second parameter to true to get an associative array as return value
然后你可以通过这种方式访问它:
echo $assoc_array['Response']['DataItems']['ClassificationDetails']['Smmt']['Make'];
// returns AUDI
此代码显示您可读的数组,并可以帮助您找到正确的键:
echo '<pre>';
print_r( $assoc_array );
echo '</pre>';
推荐阅读
- python - 没有 WSGI 守护进程
- angular - Angular 12在运行未找到测试时使用JEST设置单元测试
- python - 多个输入和 if 语句之后
- javascript - 如何每天从登录表中获取每月 DaywiseLatest 登录条目
- security - 会员、安全和信用卡支付的免费或低成本插件,总成本?
- java - 即使为假,也不要退出while循环
- dataframe - 计算 Spark DataFrame 计算标准偏差时出错
- ssis - 面临执行 Sql 任务的问题
- ironworker - 证书已过期 [CERT_HAS_EXPIRED]
- excel - 循环复制具有特定数据的整行并粘贴到下一行