php json yönetimi: Bir çözümlenmiş JSON nesnesi bir değer elde

2 Cevap php

Ben Apple'ın iTunesConnect sitesinde (iphone dev) ile bir işlem makbuz doğrulamak için bir komut dosyası inşa ediyorum ve benim kod hata nerede ben çözemiyorum. Ben "statü" değerini almak istiyorum.

Ben yanlış ne yapıyorum bulmak için bana yardım edin:

 <?php
    include("config.php");

    $receipt = json_encode(array("receipt-data" => $_GET["receipt"]));
    $response_json = do_post_request($url, $receipt);
    $response = json_decode($response_json);

    //Here's where I try to get the "status" key but doesn't work

    echo $response['status']; 
    //echo $response->status; 

    function do_post_request($url, $data)
    {
       //initialize cURL
     $ch = curl_init();

     // set the target url
     curl_setopt($ch, CURLOPT_URL,$url);

     // howmany parameter to post
     curl_setopt($ch, CURLOPT_POST, 1);

     // the receipt as parameter
     curl_setopt($ch, CURLOPT_POSTFIELDS,$data);

     $result= curl_exec ($ch);
     curl_close ($ch);
     return $result;
    }

    ?>

ve iPhone için cevap gibi görünüyor:

{"receipt":{"item_id":"327931059", "original_transaction_id":"1000000000074412", "bvrs":"1.0", "product_id":"sandy_01", "purchase_date":"2009-09-29 16:12:46 Etc/GMT", "quantity":"1", "bid":"com.latin3g.chicasexy1", "original_purchase_date":"2009-09-29 16:12:46 Etc/GMT", "transaction_id":"1000000000074412"}, "status":0}

but only "status":0 matters for now - Thank's

2 Cevap

json_decode() üzerine manuel

Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned. NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.

Yani ya 2. parametre için DOĞRU gönderin

$response = json_decode($response_json, true);

Veya nesne sözdizimi ile kodu çözülen JSON erişmek

$response->status;

EDIT

İzole testi

$json = <<<JSON
{"receipt":{"item_id":"327931059", "original_transaction_id":"1000000000074412", "bvrs":"1.0", "product_id":"sandy_01", "purchase_date":"2009-09-29 16:12:46 Etc/GMT", "quantity":"1", "bid":"com.latin3g.chicasexy1", "original_purchase_date":"2009-09-29 16:12:46 Etc/GMT", "transaction_id":"1000000000074412"}, "status":0}
JSON;

$response = json_decode( $json );

echo $response->status;

$response2 = json_decode( $json, true );

echo $response2['status'];

Çıkış

00

Sen kullanmak gerekir:

$response->status;

Json_decode işlevine gerçek bir isteğe bağlı param geçirmeden geri bir ilişkisel dizi olarak sonuçlar getirecektir.

Eğer verileri doğru deserialised ediliyor kontrol etmek için response_json değişkeni kontrol ettiniz mi? yani:

var_dump($response);

Verim hangi:

object(stdClass)#1 (2) {
["receipt"]=>
  object(stdClass)#2 (9) {
    ["item_id"]=>
    string(9) "327931059"
    ["original_transaction_id"]=>
    string(16) "1000000000074412"
    ["bvrs"]=>
    string(3) "1.0"
    ["product_id"]=>
    string(8) "sandy_01"
    ["purchase_date"]=>
    string(27) "2009-09-29 16:12:46 Etc/GMT"
    ["quantity"]=>
    string(1) "1"
    ["bid"]=>
    string(22) "com.latin3g.chicasexy1"
    ["original_purchase_date"]=>
    string(27) "2009-09-29 16:12:46 Etc/GMT"
    ["transaction_id"]=>
    string(16) "1000000000074412"
  }
  ["status"]=>
  int(0)

}