2014-09-09 5 views
1

Когда я пытаюсь декодировать строку JSON в массив, он декодирует только одну запись из всей строки.Декодирование JSON декодирует только часть строки JSON?

public function GetAllCommunities() { 
     $json_url = "URL"; 
     $json_name = "NAME"; 

     $returnArray = null; 

     $curl_init = curl_init(); 
     curl_setopt($curl_init, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($curl_init, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($curl_init, CURLOPT_URL, $json_url); 
     $result = curl_exec($curl_init); 
     curl_close($curl_init); 

     //print_r($result); 

     $jsonArray2 = json_decode($result, true); 

     print_r($jsonArray2); 
    } 

Когда я print_r в result, я получаю все данные, но когда я расшифровать json_decode($result, true);, я получаю только 1 запись из всего сырья.

Любая идея, почему? Может ли это означать, что в фиде есть ошибка?

Я вложенное JSONs там, и я проверяю их правильность с помощью этого: http://json.parser.online.fr/

Спасибо.

+3

Вы не можете иметь повторяющиеся записи. В строке JSON вы несколько раз повторяли «Сообщество». Проверьте здесь: http://jsonlint.com/ –

ответ

4

Ваш JSON неисправен. У вас есть несколько объектов на одном уровне с тем же именем (Comnunity).

Вместо

[ 
    { 
     Comunity: ... , 
     Comunity: ... , 
     Comunity: ... , 
    } 
] 

Do:

[ 
    { 
     Comunity: ... 
    }, 
    { 
     Comunity: ... 
    }, 
    { 
     Comunity: ... 
    } 
] 
+1

Большое спасибо. Я бы никогда не поймал этого haha ​​ – HelpNeeder

+1

или 'Community: [{}, {}, {}]' ... – inf3rno

+0

Существует несколько возможных способов, но тот, который он пытается, не работает: D – DanFromGermany

Смежные вопросы