php - 解码后如何从JSON中获取数据
问题描述
我正在尝试从对我来说有点复杂的 JSON 获取数据。
如何获取金额或交易日期中的值
我可以使用此代码获取 MerchantRequestID
$mpesaResponse = file_get_contents('php://input');
$jsonMpesaResponse = json_decode($mpesaResponse, true);
$MerchantRequestID = $jsonMpesaResponse["Body"]["stkCallback"]["MerchantRequestID"];
// An accepted request
{
"Body":{
"stkCallback":{
"MerchantRequestID":"19465-780693-1",
"CheckoutRequestID":"ws_CO_27072017154747416",
"ResultCode":0,
"ResultDesc":"The service request is processed successfully.",
"CallbackMetadata":{
"Item":[
{
"Name":"Amount",
"Value":1
},
{
"Name":"MpesaReceiptNumber",
"Value":"LGR7OWQX0R"
},
{
"Name":"Balance"
},
{
"Name":"TransactionDate",
"Value":20170727154800
},
{
"Name":"PhoneNumber",
"Value":254721566839
}
]
}
}
}
}
目前我尝试过的都是空白
解决方案
你需要遍历你的Item
数组。
<?php
$str = '
{
"Body":{
"stkCallback":{
"MerchantRequestID":"19465-780693-1",
"CheckoutRequestID":"ws_CO_27072017154747416",
"ResultCode":0,
"ResultDesc":"The service request is processed successfully.",
"CallbackMetadata":{
"Item":[
{
"Name":"Amount",
"Value":1
},
{
"Name":"MpesaReceiptNumber",
"Value":"LGR7OWQX0R"
},
{
"Name":"Balance"
},
{
"Name":"TransactionDate",
"Value":20170727154800
},
{
"Name":"PhoneNumber",
"Value":254721566839
}
]
}
}
}
}
';
$json = json_decode($str, true);
foreach($json['Body']['stkCallback']['CallbackMetadata']['Item'] as $index => $item_array_element){
if( $item_array_element['Name'] == 'Amount' ){
echo "Found Amount " . $item_array_element['Value'] . "\n";
}
else if( $item_array_element['Name'] == 'TransactionDate' ){
echo "Found TransactionDate " . $item_array_element['Value'] . "\n";
}
}
输出
Found Amount 1
Found TransactionDate 20170727154800
推荐阅读
- amazon-web-services - 尝试在 AWS Elastic Beanstalk 上部署 Flask 应用程序,出现错误“ModuleNotFoundError: No module named 'botocore'”
- sql-server - Having trouble calling a stored procedure in SQL Server from Python pyodbc
- javascript - 使用 OpenWeather 图标作为传单地图上的标记
- node.js - Puppeteer NodeJS没有截图整个页面
- javascript - 如何在不先“激活”的情况下在 Visual Studio Code 中使用下划线?
- php - 如何在 iframe 中阻止 referrerpolicy="no-referrer"
- java - java/kotlin 中 readBigUInt64BE 的等价物是什么?
- react-native - Algolia + React Native InstantSearch (SortBy)
- go - 使用 helm 模板文件有条件地设置整个模板文件中使用的变量
- python - 从 S3 读取 Json 并使用 python 选择文件