简体   繁体   English

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

[英]Fetching Data from a Json API endpoint and saving the data in an array. Basically Creating variables from Json data received from an API callback

I am trying to fetch data from an api, saving the data into variables which i plan to finally save in the database. 我试图从api中获取数据,将数据保存到我计划最终保存在数据库中的变量中。 The problem is that the project is throwing errors which i have not been able to solve. 问题是该项目引发了我无法解决的错误。

This code is for PHP and JSON. 此代码适用于PHP和JSON。 I am working on an online payment system and i want to save the data received from callbacks into my database. 我正在使用在线支付系统,我想将从回调接收的数据保存到我的数据库中。 However, i am not able to do this because the data received in JSON format, is proving to be a headache extracting it. 但是,我无法执行此操作,因为以JSON格式接收的数据被证明很难提取。

Here is the PHP code of how i am extracting the variables: 这是我如何提取变量的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;

Here is the JSON Data: 这是JSON数据:

{  

"Body":{ “身体”:{
"stkCallback":{ “stkCallback”:{
"MerchantRequestID":"22571-1918158-1", "CheckoutRequestID":"ws_CO_DMZ_357840864_13022019182443436", "ResultCode":0, "ResultDesc":"The service request is processed successfully.", "CallbackMetadata":{ “ MerchantRequestID”:“ 22571-1918158-1”,“ CheckoutRequestID”:“ ws_CO_DMZ_357840864_13022019182443436”,“ ResultCode”:0,“ ResultDesc”:“服务请求已成功处理。”,“ CallbackMetadata”:{
"Item":[ “项目”:[
{ {
"Name":"Amount", "Value":1.00 }, { “名称”:“金额”,“值”:1.00},{
"Name":"MpesaReceiptNumber", "Value":"NBD5TUW3AV" }, { “名称”:“ MpesaReceiptNumber”,“值”:“ NBD5TUW3AV”},{
"Name":"Balance" }, { “名称”:“余额”},{
"Name":"TransactionDate", "Value":20190213182502 }, { “名称”:“交易日期”,“值”:20190213182502},{
"Name":"PhoneNumber", "Value":254727304011 } ] } } } } “名称”:“电话号码”,“值”:254727304011}]}}}}

Here is the error I am getting: 这是我得到的错误:

[13-Feb-2019 14:46:07 Europe/London] PHP Notice: Undefined property: stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 25 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Item' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 25 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Value' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 25 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Undefined property: stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 26 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Item' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 26 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Value' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallba [13-Feb-2019 14:46:07欧洲/伦敦] PHP注意:未定义的属性:stdClass :: $ CallbackMetadata在/home/vinemupw/public_html/project/callbacks/stkcallback.php中的第25行[13-Feb-2019 14:46:07 Europe / London] PHP注意:试图在第25行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“ Item” [13-Feb-2019 14:46 :07 Europe / London] PHP注意:试图在第25行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值” [13-Feb-2019 14:46:07欧洲/ London] 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” [13-Feb-2019 14:46:07 Europe / London] PHP注意:尝试获取/ home / vinemupw / public_html / project / callbacks / stkcallba中非对象的属性“值” ck.php on line 26 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Undefined property: stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 27 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Item' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 27 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Value' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 27 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Undefined property: stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 28 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Item' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 28 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Value' of non-object in /home/vinemupw/public_html/project/c 第26行的ck.php [2019年2月13日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” 2019年2月14:46:07欧洲/伦敦] PHP注意:试图在第27行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“值” [13-Feb-2019 14:46:07 Europe / London] PHP注意:未定义的属性:28行/home/vinemupw/public_html/project/callbacks/stkcallback.php中的stdClass :: $ CallbackMetadata [13-Feb-2019 14:46:07欧洲/ London] PHP注意:试图在第28行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“ Item” [13-Feb-2019 14:46:07 Europe / London] PHP注意:试图获取/ home / vinemupw / public_html / project / c中非对象的属性'Value' allbacks/stkcallback.php on line 28 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Undefined property: stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 29 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Item' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 29 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Value' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 29 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Undefined property: stdClass::$CallbackMetadata in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 30 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Item' of non-object in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 30 [13-Feb-2019 14:46:07 Europe/London] PHP Notice: Trying to get property 'Value' of non-object in /home/vinemupw/pub 第28行的allbacks / stkcallback.php [2019年2月13日14:46:07欧洲/伦敦] PHP注意:未定义的属性:stdClass :: $ CallbackMetadata在/home/vinemupw/public_html/project/callbacks/stkcallback.php中第29行[2019年2月13日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中获取非对象的属性“值” -2019 14:46:07 Europe / London] PHP注意:未定义的属性:/home/vinemupw/public_html/project/callbacks/stkcallback.php在第30行上的stdClass :: $ CallbackMetadata [13-Feb-2019 14:46: 07 Europe / London] PHP注意:试图在第30行的/home/vinemupw/public_html/project/callbacks/stkcallback.php中获取非对象的属性“ Item” [13-Feb-2019 14:46:07 Europe /伦敦] PHP注意:尝试获取/ home / vinemupw / pub中非对象的属性“值” lic_html/project/callbacks/stkcallback.php on line 30 [13-Feb-2019 14:46:07 Europe/London] PHP Warning: json_decode() expects parameter 1 to be string, array given in /home/vinemupw/public_html/project/callbacks/stkcallback.php on line 64 第30行上的lic_html / project / callbacks / stkcallback.php [13-Feb-2019 14:46:07欧洲/伦敦] PHP警告:json_decode()期望参数1为字符串,数组位于/ home / vinemupw / public_html /第64行的project / callbacks / stkcallback.php

Did you json_decode the response ? 您是否json_decode响应? Suggesting $data holds the json string you have to do 建议$ data保存您必须执行的json字符串

$arr = json_decode($data, true); 

Then you can access the ResultCode for example with: 然后,您可以使用以下示例访问ResultCode:

$arr['Body']['stkCallback']['ResultCode'];

To access the Item list 访问项目列表

    $callbackMetadata = $data['Body']['stkCallback']['CallbackMetadata'];
    $amount = $callbackMetadata['Item'][0];

As a note: The second parameter in json_decode defines if an assoc array or an object should be returned. 注意:json_decode中的第二个参数定义是否应返回assoc数组或对象。

Edit : The json you posted above has an invalide structure, did you maybe remove some values ? 编辑:您上面发布的json具有一个invalide结构,您是否删除了一些值?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM