2016-03-24 23 views
-1

JSONファイルからPHPにデータをロードしようとしましたが、私のouptはemtpyの問題ですか?PHPロードjsonデータ、出力が空です

JSON:

{ 
    "drinks":[ 

    "1" {"coffee": "zwart", "country":"afrika"}, 

    "2" {"tea": "thee", "country":"china"}, 

    "3" {"water": "water", "country":"netherlands"}, 
    ] 
} 

PHP:

<?php 
$str = file_get_contents('data.json'); 
$json = json_decode($str, true); 
$drinks = $json['drinks'][0][coffee]; 

echo $drinks; 
?> 
+1

コロンを追加してみてください'' 1 ': '' 1':{.... ' – Veniamin

+4

のようになります.jsonは無効です。 –

+0

Jsonは無効です! –

答えて

1

あなたのJSON入力はRFC 4627(JSON specification)に応じて有効ではありません。だから、正しいJSON文字列でなければなりません:

{"drinks":[ 
       {"coffee": "zwart", "country":"afrika"}, 
       {"tea": "thee", "country":"china"}, 
       {"water": "water", "country":"netherlands"} 
      ] 
    } 

ので、あなたのコードは動作します:

$str = file_get_contents('data.json'); 
$json = json_decode($str, true);  
$drinks = $json['drinks'][0]['coffee']; 
echo $drinks; 

あるいは少なくとも、あなたは以下のようなあなたのJSON文字列をフォーマットする必要があります。

{ 
    "drinks":[  
     { 
     "1": {"coffee": "zwart", "country":"afrika"},  
     "2": {"tea": "thee", "country":"china"},  
     "3": {"water": "water", "country":"netherlands"} 
     } 
    ] 
} 

そして、あなたをこの方法でデータを取得することができます:

$str = file_get_contents('data.json'); 
$json = json_decode($str, true); 
$drinks = $json['drinks'][0]['1']['coffee']; 
echo $drinks; 
+1

おそらく言語障壁のことですが、回答の後半ではどういう意味ですか?それは最初の答えである必要がありますが、少なくとも "2番目のようにフォーマットする必要があります"? – Phil

+0

はい、私は知っていますが、私は最初の方が良い選択だと思います。とにかく指摘してくれてありがとう。 –

関連する問題