Конвертировать JSON в формате печати в действительный JSON - PullRequest
1 голос
/ 26 сентября 2010

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

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

Похоже, у кого-то еще была похожая проблема, как у меня: PHP json_decode () возвращает NULL с допустимым JSON?

Я использую блокнот ++ для записи файла json.

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

FROM:

{
    "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 без спецификации, и теперь он работает нормально. спасибо всем!

1 Ответ

5 голосов
/ 26 сентября 2010
<?php
$filename = "links.json";
$file = file_get_contents($filename);    

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


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...