2010-09-26 3 views
1

У меня есть текстовый файл, форматированный как JSON, но в формате для печати/просмотра, и я хочу преобразовать эту строку в действительный JSON. В принципе, я хочу прочитать файл с помощью PHP5 и позвонить json_decode для десериализации строки. Но json_decode не может разобрать «удобную для печати» строку json.Преобразование JSON в формате печати в действительный JSON

Я получаю ошибку 4 Неверный или неправильный JSON.

Похоже, кто-то был подобный вопрос, как мне: PHP json_decode() returns NULL with valid JSON?

Я использую Notepad ++, чтобы записать файл в формате JSON.

Итак, как я могу конвертировать

ОТ:

{ 
    "data": [ 
     { 
      "thumbImg": "thumbImg", 
      "street": "street", 
      "city": "Fort Worth", 
      "state": "Texas", 
      "zip": "76192-0001", 
      "url": "url" 
     } 
    ] 
} 

TO:

{"data":[{"thumbImg": "thumbImg", "street": "street", "city": "Fort Worth", "state": "Texas", "zip": "76192-0001", "url": "url"}] 

Я даже попытался сделать следующее:

<?php 
$filename = "links.json"; 
$file = fopen($filename, "r"); 

$lines = file($filename); 

$data = ""; 
; 
foreach ($lines as $line_num => $line) { 
    $formatted = trim($line); 
    $formatted = str_replace("\r", "", $formatted); 
    $formatted = str_replace("\n", "", $formatted); 
    $data .= $formatted;   
} 

$json = json_decode($data, true); 
?> 

Я сделал var_dump полученной строки json и http://jsonlint.com/ отметил его как действительный json; однако json_decode по какой-то причине не может десериализовать строку json.

Спасибо!

РЕШЕНИЕ Я установил кодировку текстового файла в UTF-8 без спецификации, и теперь он отлично работает. Спасибо вам всем!

+0

данных разбирает без каких-либо проблем для меня. – Quentin

+0

Работает, когда я читаю текстовый файл (без перетаскивания текста). Похоже, вы начали с «У меня проблемы с чтением файла», но в итоге вы спросили: «Как я могу переформатировать этот файл?», Что несколько шагов вниз по линии от реальной проблемы и привело к тому, что никому не помогает. – Quentin

+2

'json_decode' отлично работает для меня: http://codepad.org/wcNFa2F5 Вы должны попробовать' file_get_contents' прочитать файл: http://php.net/manual/en/function.file-get-contents.php –

ответ

5
<?php 
$filename = "links.json"; 
$file = file_get_contents($filename);  

$json = json_decode($file, true); 
?> 


Ссылки:
- file_get_contents()
- json_decode()

+0

Спасибо. Оказывается, файловое кодирование моего текстового файла отключено. Я изменил кодировку исходного файла на UTF-8 без спецификации, и теперь он отлично работает! благодарю вас за отличную поддержку! – Abe

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