2017-02-07 20 views
0

私はPHPスクリプトを持っています。このスクリプトは、Androidアプリケーションからハッシュマップを介してJSON文字列を受け取っています。
これはobjと呼ばれるJSON文字列です:JSON文字列がデコードされない

{ 
"total": "25", 
"buyer_id": "1", 
"order": [ 
    { "id": "1", "name": "cosmo" }, 
    { "id": "5", "name": "Choco" }, 
    { "id": "22", "name": "gogo" } 
] 
} 

これは、変数がnullであるため、json_decodeが動作していないように私には思えるスクリプト

$json = $_POST['obj']; 
$data = json_decode($json,true); 

//initialize the variables to the json object param 
$buyer_id = $data->buyer_id; 
$total = $data->total; 

//insert the order in the orders table 
$sql_orders = "insert into orders(buyer_id,total) values 
('$buyer_id','$total')"; 
$res = mysqli_query($con,$sql_orders); 

です。 i echoのいずれかの変数の場合:

echo $data.total; 

出力はNULLです。

+1

echo $ data-> totalであってはなりませんか? – Liquidchrome

+1

'$ data = json_decode($ json、true);' param 2はmake allを配列にします。 '$ data = json_decode($ json);と' $ data-> buyer_id; 'は2番目のパラメータが緩くなって – RiggsFolly

+1

が動作するでしょうか? – omxv

答えて

0

json_decode()の第2引数としてtrueを指定したことが原因です。オブジェクトが連想配列に変換されます。したがって、逆参照演算子(->)は$dataでは機能しません。第2引数を指定せずにjson_decode()に電話をかけてください。


注:あなたはJSONの数値を使用している場合、それはそのように使用することをお勧めします:

{ 
    "total": 25, 
    "buyer_id": 1, 
    "order": [ 
     { 
      "id": 1, 
      "name": "cosmo" 
     }, { 
      "id": 5, 
      "name": "Choco" 
     }, { 
      "id": 22, 
      "name": "gogo" 
     } 
    ] 
} 

それは良く読めるのです。

関連する問題