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

问题描述 投票:0回答:1

我正在尝试从api获取数据,将数据保存到我计划最终保存在数据库中的变量中。问题是该项目正在抛出我无法解决的错误。

此代码适用于PHP和JSON。我正在研究在线支付系统,我想将从回调中收到的数据保存到我的数据库中。但是,我无法做到这一点,因为以JSON格式接收的数据被证明是令人头疼的提取它。

这是我如何提取变量的PHP代码:

$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”:“服务请求已成功处理。”,“CallbackMetadata”:{ “项目”:[ { “名称”:“金额”,“价值”:1.00},{ “名称”:“MpesaReceiptNumber”,“Value”:“NBD5TUW3AV”},{ “姓名”:“余额”},{ “名称”:“TransactionDate”,“Value”:20190213182502},{ “姓名”:“电话号码”,“价值”:254727304011}]}}}}

这是我得到的错误:

[13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:第25行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中的未定义属性:stdClass :: $ CallbackMetadata [201-Feb-2019 14:46:07欧洲/伦敦] PHP注意:尝试在第25行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性'Item'[201-Feb-2019 14:46 :07欧洲/伦敦] PHP注意:尝试在第25行的@home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值”[13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:stdClass :: $ CallbackMetadata在/home/vinemupw/public_html/project/callbacks/stkcallback.php第26行[13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图在第26行的[home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性'Item'[21-Feb-2019 14:46:07欧洲/伦敦] PHP注意:试图获取/ home / vinemupw / public_html / project / callbacks / stkcallba中非对象的属性'Value' ck.php第26行[13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:第27行/home/vinemupw/public_html/project/callbacks/stkcallback.php中的未定义属性:stdClass :: $ CallbackMetadata [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:尝试在第27行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性'Item'[13- Feb-2019 14:46:07欧洲/伦敦] PHP注意:尝试在第27行的/home/vinemupw/public_html/project/callbacks/stkcallback.php获取非对象的属性'Value'[201-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:stdClass :: $ CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on 28 28 [13-Feb-2019 14:46:07 Europe /伦敦] PHP注意:尝试在第28行的[home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性'Item'[21-Feb-2019 14:46:07 Europe / London] PHP注意:尝试在/ home / vinemupw / public_html / project / c中获取非对象的属性“Value”第28行[2009年2月13日14:46:07欧洲/伦敦] PHP注意:/ home /vinemupw第29行[13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:尝试在第29行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性'Item'[ 13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:尝试在第29行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值”[13-Feb -2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:stdClass :: $ CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 30 [13-Feb-2019 14:46: 07欧洲/伦敦] PHP注意:尝试在第30行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性'Item'[19-Feb-2019 14:46:07 Europe /伦敦] PHP注意:尝试在/ home / vinemupw / pub中获取非对象的属性“Value”第30行的lic_html / project / callbacks / stkcallback.php [19-Feb-2019 14:46:07欧洲/伦敦] PHP警告:json_decode()期望参数1为字符串,在/ home / vinemupw / public_html /中给出的数组第64行的project / callbacks / stkcallback.php

php arrays json api
1个回答
0
投票

你有没有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结构无效,您是否删除了一些值?

© www.soinside.com 2019 - 2024. All rights reserved.