2015-05-14 2 views
0

У меня есть текстовый файл с json на нем. Пример ниже:Получение null в json_decode

{'something' : 'ss'} 

Я пытаюсь прочитать его на PHP и преобразовать его в массив с помощью json_decode.

 $temp = ''; 
     $fh = fopen('/quiz' . $testid . '.txt' ,'r'); 

     while ($line = fgets($fh)) { 
      $temp .= $line; 
     } 
     fclose($fh); 

     $temp = str_replace("\n","",$temp); //to remove new line 
     $temp = str_replace("\r","",$temp); 
     $temp = json_decode($temp); 

Но им получить null

Если я не json_decode это .. я могу получить строку.

Я надеюсь, что кто-нибудь может мне помочь.

Спасибо, E

ответ

1

Вам не нужно делать какие-либо разбора перед вызовом json_decode

$contents = file_get_contents('/quiz' . $testid . '.txt'); 
$temp = json_decode($contents); 

Если вы все еще получаете нулевой, ваш JSON, скорее всего недействительно, вы можете использовать json_last_error для диагностики.

+0

Еще не работает .. Im получение 4 на json_last_error – Eddie

+2

Похоже, ваш файл не в формате JSON. Можете ли вы опубликовать его больше? –

0

Этот фрагмент кода работает, так что я думаю, что это проблема с файлом разборе алгоритма

<?php 
$temp = ''; 

$temp='{ 
"a":1, 
"b":[1,2,3] 
}'; 

$temp = str_replace("\n","",$temp); //to remove new line 
$temp = str_replace("\r","",$temp); 
$temp = json_decode($temp); 
var_dump($temp); 
?> 
+0

Это работает .. но это из файла .. он не работает – Eddie

+0

, поэтому постарайтесь поставить эхо $ temp после закрытия файла и показать нам результат – SharpEdge

0

Как documented:

Возвращает значение, закодированного в формате JSON в соответствующий тип PHP. Значения true, false и null возвращаются как TRUE, FALSE и NULL соответственно. NULL возвращается, если json не может быть декодирован или если закодированные данные глубже, чем предел рекурсии.

Причина в том, что у вас нет valid JSON.

Parse error on line 1: 
{ 'something': 'ss'} 
-----^ 
Expecting 'STRING', '}' 

Вы, наверное, имели в виду:

{ 
    "something": "ss" 
} 
Смежные вопросы