2011-07-11 1 views
1

有効なJSON形式のtxtファイルに「書き込む」PHPスクリプトを作成しようとしています。JSONコードをtxtファイルに書き込むPHPスクリプトにスペースや改行がありません。直し方?

私が作成したスクリプトは、基本的には、いくつかの理由を除き、作品、txtファイルに書き込まれたJSONコードはスペースや改行を持っていない(それだけで一つの大きな長い行です)。

http://jsonlint.com/http://www.jslint.com/のJSONコード(txtファイルから)を確認しました。

$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リントは、txtファイルのJSONコードは "有効なJSON"

JSLint、であるため、 "ミッシングスペース" ここ

へのエラーの多くは、PHPスクリプトであると言いますと言います私はjson_decodeとjson_encodeで別の行を追加しようとしましたが、これまでのところ運がありません。

テキストファイルは、スペースや改行でJSON形式を持っているように、このスクリプトに追加する必要があるものを教えてください。それは完璧なJSON形式を持っている必要がありますので、

生成されたtxtファイルはjQueryのスクリプトで使用されています。

ありがとうございます!

+0

JSONはリテラルのjavascriptデータです。改行/スペースなしで表示される場合は、元のデータの状態です。 JSONは読みやすくするためのものではありません.JavaScriptのデータ構造をプレーンテキスト形式で送信することについてです。 –

+1

'var x ='をそれの前に追加し、その後に ';'を追加すると、JSLintのJavaScriptとして検証する必要があります。 JSONはJavaScriptではありません。 http://json.org/ – artlung

+0

を参照してください。@artlung JSONLintでJSONを検証するのですか? – thescientist

答えて

2

これは応答として得られるものなので、改行やスペースはありません。アドレスバーにURLを置くだけで表示されます。

JSLintはJavaScriptコードを検証するためのものですが、JSON用に使用することは意味がありません。

JSONが有効な限り(このような場合)、あなたは問題ありません。何も変更する必要はありません。とにかくすべてのJSONパーサは空白と改行を無視します。

1

私が最近知ったように、JSON!= JavaScript。 JavaScriptのJSON文字列は単なる文字列です。それを考えると、JavaScript文字列では有効ではないので、実際に改行したくないでしょう。

エラーはおそらく私が全体のJSON文字列の前後に引用符がない推測すると、JavaScriptのオブジェクトとしてそれを解析しようとするJSLintに関連しています。 JSON Lintが有効である限り、それは有効です。

+0

JSLintはJavaScriptスタイルのチェッカーであり、構文チェッカーではないのでエラーがある。 。 JSLintの警告は無意味なので、JSONデータは、JavaScriptコードのようにかなり印刷されインデントされている必要はありません。 – duskwuff

+0

私はJSLintを使用していません。スタイルを適用するようにIDEを設定しましたが、とにかく構文を実行します。 – Endophage

2

私はこの問題を考え出したし、それは、PHPスクリプトによって生成されたテキストファイルがUTF-8形式ではありませんでしたことが判明http://php.net/manual/en/function.fwrite.php

で修正を見つけました。私はPHPスクリプトを更新し、それは今働いているようだ。 phpスクリプトの最終版は次のとおりです。

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

$データ=ののfile_get_contents( 'http://api.twitter.com/1/statuses/user_timeline/screen_name.json?count=1 & include_rts =真& include_entities =真');

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

答えをくれた皆さん、本当にありがとうございます。

関連する問題