В скрипте PHP, который записывает код JSON в текстовый файл, отсутствуют пробелы и разрывы строк.Как исправить? - PullRequest
1 голос
/ 11 июля 2011

Я пытаюсь создать сценарий PHP, который будет «записывать» в текстовый файл в допустимом формате JSON.

Созданный сценарий в основном работает, за исключением некоторой причины написанного кода JSON.к текстовому файлу нет пробелов или разрывов строк (это всего лишь одна большая длинная строка).

Я проверил код JSON (из файла txt) в http://jsonlint.com/ и http://www.jslint.com/.

JSON Lint говорит, что код JSON файла txt является "допустимым JSON"

JSLint, говорит много ошибок из-за «Недостающего пространства»

Вот скрипт php:

$cache = dirname(__FILE__) . '/cache/json.txt';

$data = file_get_contents('http://api.twitter.com/1/statuses/user_timeline/screen_name.json?count=1&include_rts=true&include_entities=true');   

    $cachefile = fopen($cache, 'wb');
        fwrite($cachefile, $data);
        fclose($cachefile);

Я пытался добавить разные строки с json_decode и json_encodeно пока не повезло.

Скажите, пожалуйста, что нужно добавить в этот скрипт, чтобы текстовый файл имел формат JSON с пробелами и переносами строк.

Сгенерированный текстовый файл используется в скрипте jQueryпоэтому он должен иметь идеальный формат JSON.

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

Я выяснил проблему и нашел исправление в http://php.net/manual/en/function.fwrite.php

Оказывается, что текстовый файл, сгенерированный сценарием PHP, не был в формате UTF-8.Я обновил скрипт php и теперь он работает.Вот окончательная версия php-скрипта:

$ cache = dirname ( FILE ).'/cache/json.txt';

$ data = file_get_contents (' http://api.twitter.com/1/statuses/user_timeline/screen_name.json?count=1&include_rts=true&include_entities=true');

$cachefile = fopen($cache, 'wb');
    fwrite($cachefile,utf8_encode($data));
    fclose($cachefile);

Спасибо тем, кто дал ответы, очень ценю это.

2 голосов
/ 11 июля 2011

В нем нет разрывов строк или пробелов, потому что это то, что вы получаете в качестве ответа.Просто поместите URL в адресную строку, и вы увидите его.

JSLint предназначен для проверки кода JavaScript , использовать его для JSON не имеет смысла.

Пока JSON действителен (что, похоже, так), у вас все в порядке.Не нужно ничего менять.Каждый анализатор JSON игнорирует пробелы и разрывы строк.

1 голос
/ 11 июля 2011

Как я недавно узнал, JSON! = JavaScript.Строка JSON в JavaScript - это просто строка.Учитывая это, вам действительно не нужны разрывы строк, так как они недопустимы в строках javascript.

Ошибки, вероятно, связаны с попыткой JSLint проанализировать его как объект JavaScript, так как я предполагаю, что кавычек нетвся строка JSON.До тех пор, пока JSON Lint говорит, что это действительно так, это так.

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