首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Json端点获取数据并将数据保存在数组中。从API回调中接收到的Json数据创建变量

从Json端点获取数据并将数据保存在数组中。从API回调中接收到的Json数据创建变量
EN

Stack Overflow用户
提问于 2019-02-13 14:56:40
回答 1查看 258关注 0票数 0

我试图从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数据:

代码语言:javascript
复制
{  

“身体”:{

代码语言:javascript
复制
   "stkCallback":{
代码语言:javascript
复制
      "MerchantRequestID":"22571-1918158-1",          "CheckoutRequestID":"ws\_CO\_DMZ\_357840864\_13022019182443436",          "ResultCode":0,          "ResultDesc":"The service request is processed successfully.",          "CallbackMetadata":{
代码语言:javascript
复制
         "Item":[
代码语言:javascript
复制
            {
代码语言:javascript
复制
               "Name":"Amount",                   "Value":1.00                },                {
代码语言:javascript
复制
               "Name":"MpesaReceiptNumber",                   "Value":"NBD5TUW3AV"                },                {
代码语言:javascript
复制
               "Name":"Balance"                },                {
代码语言:javascript
复制
               "Name":"TransactionDate",                   "Value":20190213182502                },                {
代码语言:javascript
复制
               "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表示的数组

EN

回答 1

Stack Overflow用户

发布于 2019-02-13 15:01:49

你json_decode回应了吗?建议$data持有你必须做的json字符串

代码语言:javascript
复制
$arr = json_decode($data, true); 

然后您可以访问ResultCode,例如:

代码语言:javascript
复制
$arr['Body']['stkCallback']['ResultCode'];

要访问项目列表,请执行以下操作

代码语言:javascript
复制
    $callbackMetadata = $data['Body']['stkCallback']['CallbackMetadata'];
    $amount = $callbackMetadata['Item'][0];

注意: json_decode中的第二个参数定义了是否应该返回assoc数组或对象。

编辑:您上面发布的json有一个无效的结构,您可能删除了一些值吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54673115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档