【问题标题】:Get the value of Resultcode from a decoded json array从解码的 json 数组中获取 Resultcode 的值
【发布时间】:2019-03-22 04:23:36
【问题描述】:

大家好,我知道这可能很容易,但我已经尝试过,但仍然做不到。我想获取结果代码的值,但仍然无法打印,所以我可以做一个 if 语句

//loop through json array 

$str = file_get_contents('Response.json');
$array = json_decode($str, true);

$last = array_pop($array);

echo "<pre>";
echo $last[0];

//echo $last[0]['Body']['stkCallback']['ResultCode'];

echo $last[0] 行有效并给了我

{"Body":{"stkCallback":{"MerchantRequestID":"16421-6174532-2","CheckoutRequestID":"ws_CO_DMZ_99605283_17102018133825256","ResultCode":1036,"ResultDesc":"[STK_CB - ]SMSC ACK timeout."}}}

但是

$last[0]['Body']['stkCallback]['ResultCode'] 

不会回显或打印出任何内容,只是一个 {

谢谢

【问题讨论】:

  • 看来你需要重新解码。您的 Response.json 内容是否经过双重编码?你能分享那个文件的内容吗?
  • 我可以通过echo 输出$last[0] 值并看到一个字符串,这意味着您在json 中编码了json。因此,您还需要对其进行解码。如果你也生成文件,我建议去掉双重编码,只对最终结果编码一次。

标签: php json


【解决方案1】:

好像你的某些数组值存在 json 字符串, 如果是这样,这可能是solution

【讨论】:

    【解决方案2】:

    似乎当您回显 $last[0] 时,您看到的是另一个 json 字符串,而不是一个对象。您也需要对其进行解码:

    $last = json_decode(array_pop($array), true);
    print_r($last);
    

    【讨论】:

      【解决方案3】:

      这是因为你仍然从这一行得到一个 json。您还需要对其进行解码:

      print_r(json_decode($last[0],true));
      

      这应该会返回你需要的数组。

      请记住,你可以echo这意味着它仍然是json格式,否则你会得到一个错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-18
        • 2014-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        • 2016-02-12
        • 2019-10-16
        相关资源
        最近更新 更多