我试图从api中获取数据,将数据保存到变量中,我计划最终将这些变量保存在数据库中。问题是这个项目正在抛出我无法解决的错误。
此代码用于PHP和JSON。我正在开发一个在线支付系统,我想将从回调中收到的数据保存到我的数据库中。但是,我无法做到这一点,因为以JSON格式接收的数据被证明是一个令人头疼的提取数据。
下面是如何提取变量的代码:
$amount=$callbackData->Body->CallbackMetadata->Item[0]->Value; $mpesaReceiptNumber=$callbackData->Body->stkCallback->CallbackMetadata->Item[1]->Value; $balance=$callbackData->Body->stkCallback->CallbackMetadata->Item[2]->Value; $b2CUtilityAccountAvailableFunds=$callbackData->Body->stkCallback->CallbackMetadata->Item[3]->Value; $transactionDate=$callbackData->Body->stkCallback->CallbackMetadata->Item[4]->Value; $phoneNumber=$callbackData->Body->stkCallback->CallbackMetadata->Item[5]->Value;
这里是JSON数据:
{ “身体”:{
"stkCallback":{ "MerchantRequestID":"22571-1918158-1", "CheckoutRequestID":"ws\_CO\_DMZ\_357840864\_13022019182443436", "ResultCode":0, "ResultDesc":"The service request is processed successfully.", "CallbackMetadata":{ "Item":[ { "Name":"Amount", "Value":1.00 }, { "Name":"MpesaReceiptNumber", "Value":"NBD5TUW3AV" }, { "Name":"Balance" }, { "Name":"TransactionDate", "Value":20190213182502 }, { "Name":"PhoneNumber", "Value":254727304011 } ] } } } },这是我得到的错误:
13-2019 14:46:07欧洲/伦敦PHP通知:未定义的属性: stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php,第25行13-2019 14:46:07欧洲/伦敦PHP通知:试图在第25行/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“项”,第25行-2月-2099 14:46:07欧洲/伦敦PHP通知:试图获取非对象的属性“值”在第25行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中14:46:07欧洲/伦敦PHP通知:未定义的属性: stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php在第26行13-2019 14:46:07欧洲/伦敦PHP通知:试图在/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取第26行13-2月-2019 14:46:07欧洲/伦敦PHP通知:试图在第26行(第13行-2019年2月14日:46:07欧洲/伦敦PHP通知)中在/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值”,通知:未定义的属性: stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php,第27行-2月-2019 14:46:07欧洲/伦敦PHP通知:试图在/home/vinemupw/public_ /home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的房地产“项目”第27行的html/project/callback/stkcallback.php 14:46:07欧洲/伦敦PHP通知:试图在第27行/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性‘值’14:46:07欧洲/伦敦PHP通知:未定义的属性:stdClass:$CallbackMetadata /home/vinemupw/public_html/project/callbacks/stkcallback.php行28 13-2月-2019 14:46:07欧洲/伦敦PHP通知:试图在第28行/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“项”(第28行)-2019-2019 14:46:07欧洲/伦敦PHP通知:试图在第28行/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值”14:46:07欧洲/伦敦PHP通知:未定义的属性: stdClass::$CallbackMetadata /home/vinemupw/public_html/project/callbacks/stkcallback.第29行13-2月-2019 14:46:07欧洲/伦敦PHP通知:试图在第29行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“项”,第29行-2月-2019 14:46:07欧洲/伦敦PHP通知:试图获取第29行/home/vinemupw/public_html/project/callbacks/stkcallback.php中非对象的属性“值”(第29行-2月-2019 14:46:07欧洲/伦敦PHP通知):未定义的属性:stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php,第30行-2019年2月14日14:46:07欧洲/伦敦PHP通知:试图在第30行/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“项目”14:46:07欧洲/伦敦PHP通知:试图在第30行在/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值”13-2019 14:46:07欧洲/伦敦PHP警告: json_decode()期望参数1为字符串,第64行中以/home/vinemupw/public_html/project/callbacks/stkcallback.php表示的数组
发布于 2019-02-13 15:01:49
你json_decode回应了吗?建议$data持有你必须做的json字符串
$arr = json_decode($data, true); 然后您可以访问ResultCode,例如:
$arr['Body']['stkCallback']['ResultCode'];要访问项目列表,请执行以下操作
$callbackMetadata = $data['Body']['stkCallback']['CallbackMetadata'];
$amount = $callbackMetadata['Item'][0];注意: json_decode中的第二个参数定义了是否应该返回assoc数组或对象。
编辑:您上面发布的json有一个无效的结构,您可能删除了一些值吗?
https://stackoverflow.com/questions/54673115
复制相似问题