2017-05-07 16 views
1

json_decodeこの質問で: validated json question私は間違って何をしている誰に教えていただけますか?または何が起こっている。前もって感謝します。JSON空の配列は、私は配列にJSONに変換し、次のコードをしている

私は私の$ strをエコーするとき、私は、次を得る:PHPマニュアルからimage of echo of $str

+0

'html_entity_decode'ステップなしで' json_decode($ str、true) 'だけ試しましたか? – rickdenhaan

+3

'json_decode'メソッドの後に' json_last_error() 'を表示します。 –

+0

私はhtml_entity_decodeなしで試してみましたが、それでもnullを返しました。私はjson_last_errorを印刷するときに私は4 – FutureCake

答えて

1

のあなたはjson_decode有効なJSONない文字列に渡しているので、多分、これはNULLが返される理由です。

私は、エラーコードを検査するコメントからわかるように

はちょうどJSON文字列が構文エラーを有することを意味する定数JSON_ERROR_SYNTAXに対応4を与える生成しました。

http://php.net/manual/en/function.json-last-error.phpを参照)


あなたは

$str = file_get_contents('http://localhost/data.json'); 

から得るもの(エコー)検査すべきは、(あなたはあなたの答えを編集し、それを投稿する - またはそれの一部)

有効ではないことを確認してください。JSON;問題はそこにある:data.json

あなたが何かを修正して、data.jsonから取得すると、私はあなたが実際にフェッチされたデータにhtml_entity_decodeを使用することを保証するでしょう。

htmlでエンコードされたJSONデータを持つのは「奇妙」です。あなたがdata.jsonから何を得るを見てみると


UPDATE

JSONデータが

(私は  Sの存在を見るように)これは、実際には奇妙である、実際にHTMLエンティティを含んでいるように見えます正しい方法はdata.jsonの生成方法を修正することです非HTMLエンコード JSONデータが返され、charsetはUTF-8で、応答コンテンツタイプはContent-Type: application/jsonです。

data.jsonはどこから来たのか、それを生成するコードはどこにあるのか分かりません。最終的に別の回答を投稿することがあります。

ここではクイックフィックスがありますが、適切なアプローチは私が上で提案したものであれば可能です。あなたがhtmlエンティティ、非破断スペースをデコードしたよう

 は、JSONエンコードされたデータのための有効でないこと(バイトは196、160値)2バイトUTF-8文字になります。

アイデアは、これらの文字を削除することです。あなたのコードは次のようになります:

+0

私の編集した回答を参照してください – FutureCake

+0

@FutureCakeは答えを更新しました。 – Paolo

+0

あなたは本当に感謝の男のMVPです!今私は何かが間違ってもう一度おかげで参照してください:) – FutureCake

0

http://php.net/manual/en/function.json-decode.php

戻り

... NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit

だから、きっとjson_decode()に渡されたJSON文字列が有効ではありません。

html_entity_decode

+0

を取得するので、私のjsonが再帰制限を超えている場合、これをどのように修正するのですか?取得データはクライアントからのものです。だから私はおそらく彼にjsonを変更するように頼むことはできません。 – FutureCake

+0

@FutureCake過大な再帰によってエラーが発生するのではなく、構文エラーが発生します(詳細は私の答えを参照してください) – Paolo

関連する問題