通过PHP访问JSON响应数据 [英] Accesing JSON response data via PHP

查看:163
本文介绍了通过PHP访问JSON响应数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Paypal API PHP REST SDK.我收到的响应看起来像是JSON格式,但是我无法访问对象和数组中的属性.

I'm using the Paypal API PHP REST SDK. I got a response that looks like in JSON format but i'm unable to access the properties inside the object and array.

如何通过PHP通过此JSON响应访问状态"属性?该响应由Paypal \ Api \ Payment类型的对象包装. foreach循环返回NULL

How do I access the "state" properties from this JSON response via PHP? The response is being wrapped by the object of Paypal\Api\Payment type. foreach looping returns NULL

var_dump($ response)如下所示:

var_dump($response) looks like below:

object(PayPal\Api\Payment)#8 (1) {
  ["_propMap":"PayPal\Common\PPModel":private]=>
  array(8) {
    ["id"]=>
string(28) "PAY-8JC052XXXXKKZMQNQ"
["create_time"]=>
string(20) "2013-12-19T10:19:34Z"
["update_time"]=>
string(20) "2013-12-19T10:20:38Z"
["state"]=>
string(8) "approved"
["intent"]=>
string(4) "sale"
["payer"]=>
object(PayPal\Api\Payer)#33 (1) {
  ["_propMap":"PayPal\Common\PPModel":private]=>
  array(2) {
    ["payment_method"]=>
    string(6) "paypal"
    ["payer_info"]=>
    object(PayPal\Api\PayerInfo)#30 (1) {
      ["_propMap":"PayPal\Common\PPModel":private]=>
      array(5) {
        ["email"]=>
        string(11) "some@email.com"
        ["first_name"]=>
        string(6) "fname"
        ["last_name"]=>
        string(5) "lname"
        ["payer_id"]=>
        string(13) "UAGGF3392CUTG"
        ["shipping_address"]=>
        object(PayPal\Api\Address)#31 (1) {
          ["_propMap":"PayPal\Common\PPModel":private]=>
          array(5) {
            ["line1"]=>
            string(26) "Address"
            ["city"]=>
            string(13) "City"
            ["state"]=>
            string(8) "State"
            ["postal_code"]=>
            string(5) "000000"
            ["country_code"]=>
            string(2) "US"
          }
        }
      }
    }
  }
}
["transactions"]=>
array(1) {
  [0]=>
  object(PayPal\Api\Transaction)#34 (1) {
    ["_propMap":"PayPal\Common\PPModel":private]=>
    array(4) {
      ["amount"]=>
      object(PayPal\Api\Amount)#35 (1) {
        ["_propMap":"PayPal\Common\PPModel":private]=>
        array(3) {
          ["total"]=>
          string(4) "1.00"
          ["currency"]=>
          string(3) "USD"
          ["details"]=>
          object(PayPal\Api\Details)#36 (1) {
            ["_propMap":"PayPal\Common\PPModel":private]=>
            array(1) {
              ["subtotal"]=>
              string(4) "1.00"
            }
          }
        }
      }
      ["description"]=>
      string(33) "Item name: 1"
      ["item_list"]=>
      object(PayPal\Api\ItemList)#37 (1) {
        ["_propMap":"PayPal\Common\PPModel":private]=>
        array(1) {
          ["items"]=>
          array(1) {
            [0]=>
            object(PayPal\Api\Item)#38 (1) {
              ["_propMap":"PayPal\Common\PPModel":private]=>
              array(4) {
                ["name"]=>
                string(20) "Item name"
                ["price"]=>
                string(4) "1.00"
                ["currency"]=>
                string(3) "USD"
                ["quantity"]=>
                string(1) "1"
              }
            }
          }
        }
      }
      ["related_resources"]=>
      array(1) {
        [0]=>
        object(PayPal\Api\RelatedResources)#40 (1) {
          ["_propMap":"PayPal\Common\PPModel":private]=>
          array(1) {
            ["sale"]=>
            object(PayPal\Api\Sale)#42 (1) {
              ["_propMap":"PayPal\Common\PPModel":private]=>
              array(7) {
                ["id"]=>
                string(17) "5DH04XXX63X"
                ["create_time"]=>
                string(20) "2013-12-19T10:19:34Z"
                ["update_time"]=>
                string(20) "2013-12-19T10:20:38Z"
                ["state"]=>
                string(9) "completed"
                ["amount"]=>
                object(PayPal\Api\Amount)#44 (1) {
                  ["_propMap":"PayPal\Common\PPModel":private]=>
                  array(2) {
                    ["total"]=>
                    string(4) "1.00"
                    ["currency"]=>
                    string(3) "USD"
                  }
                }
                ["parent_payment"]=>
                string(28) "PAY-8JC05XXXXKZMQNQ"
                ["links"]=>
                array(3) {
                  [0]=>
                  object(PayPal\Api\Links)#46 (1) {
                    ["_propMap":"PayPal\Common\PPModel":private]=>
                    array(3) {
                      ["href"]=>
                      string(65) "https://api.sandbox.paypal.com/v1/payments/sale/5DHXX91763X"
                      ["rel"]=>
                      string(4) "self"
                      ["method"]=>
                      string(3) "GET"
                    }
                  }
                  [1]=>
                  object(PayPal\Api\Links)#47 (1) {
                    ["_propMap":"PayPal\Common\PPModel":private]=>
                    array(3) {
                      ["href"]=>
                      string(72) "https://api.sandbox.paypal.com/v1/payments/sale/5DHXXA691763X/refund"
                      ["rel"]=>
                      string(6) "refund"
                      ["method"]=>
                      string(4) "POST"
                    }
                  }
                  [2]=>
                  object(PayPal\Api\Links)#48 (1) {
                    ["_propMap":"PayPal\Common\PPModel":private]=>
                    array(3) {
                      ["href"]=>
                      string(79) "https://api.sandbox.paypal.com/v1/payments/payment/PAY-8JC052914XX1034SKKZMQNQ"
                      ["rel"]=>
                      string(14) "parent_payment"
                      ["method"]=>
                      string(3) "GET"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
["links"]=>
array(1) {
  [0]=>
  object(PayPal\Api\Links)#49 (1) {
    ["_propMap":"PayPal\Common\PPModel":private]=>
    array(3) {
      ["href"]=>
      string(79) "https://api.sandbox.paypal.com/v1/payments/payment/PAY-8JC0XX914D601034SKKZMQNQ"
      ["rel"]=>
      string(4) "self"
      ["method"]=>
      string(3) "GET"
    }
  }
}
  }
}

我尝试了json_decode($ response),但是它返回NULL,所以我认为这已经是正确的JSON格式.

I tried json_decode($response) but it returned NULL so i assumed that this is already the correct JSON format.

我尝试了echo $ response-> id并返回空白

I tried echo $response->id and it returns blank

我还尝试了foreach的多种变体($ response-> id作为$ value){var_dump($ value); },也不会返回任何内容

I've also tried multiple variations of foreach ($response->id as $value) { var_dump($value); } which also returns nothing

帮助!

推荐答案

事实证明这不是标准的JSON格式.由于某种原因,Paypal API SDK通过此行以其自己的"json"格式返回它

It turns out that this is not a standard JSON format. For some reason the Paypal API SDK return it in their own "json" format through this line

$ret->fromJson($json);
return $ret;

我只是跳过了它,而是返回$ json,它给了我可以放入json_decode进行进一步处理的格式.

I just skipped that and return $json instead and it gives me the format that i can put into json_decode for further processing.

return $json;

这让我花了整整一整天的时间! PFF ...

That took me 1 full freaking day! Pff...

这篇关于通过PHP访问JSON响应数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆