2016-03-24 28 views
-1

JSON filomdan veriyi php'ye yüklemeye çalışıyorum, fakat benim öksürük neyin ters gittiğini görüyor mu?PHP json verilerini yüklüyor, çıktı boş

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

Sütun eklemeye çalışın "1" den sonra: bu gibi: "1": {.... ' – Veniamin

+4

Bu json geçersiz gibi görünüyor. –

+0

Json geçerli değil! –

cevap

1

JSON giriş RFC 4627 (JSON specification) 'e göre geçerli DEĞİLDİR. Yani doğru json dize olmalıdır:

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

böylece kod çalışacak:

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

Ya da en azından, aşağıda gibi json dize biçimlendirmek gerekir:

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

Sizden Verilerinizi şu şekilde alabilirsiniz:

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

Belki sadece bir dil engeli, ama cevabınızın 2. yarısında ne demek istiyorsun? İlk cevap "olmalı", ancak "en azından olmazsa olmaz", ikinci gibi biçimlendirilmeli? – Phil

+0

Evet, biliyorum, ama ilki daha iyi bir seçenek. Yine de işaret ettiğin için teşekkürler. –