2011-08-16 14 views
0

何らかの理由で、json_decodeが有効なJSONでNULLを返すことがあります。json_decodeはPHP、NFL APIでnullを返します

JSONは次の場所にあります。http://www.nfl.com/liveupdate/scorestrip/scorestrip.json

私はページ(のfile_get_contents)のファイルの内容を取得し、それにjson_decodeを実行しています。

また、魔法引用符のstripslashes b/cも試してみました。事前に

おかげで、 フィル

$json = file_get_contents('http://www.nfl.com/liveupdate/scorestrip/scorestrip.json'); 

var_dump(json_decode($json)); 
+2

最初JSONを確認してください: 'のvar_dump($のJSON);' - それはまだ有効なものですか? – hakre

+0

@hakreそれは私によく似ています.. – psarid

+0

jsonが壊れている場合、 'json_decode'はNULLを返します。 2回見て、いくつかのJSON構文チェッカーに入れて、オンラインにする必要があります。 **編集:**私は[フィル](http://stackoverflow.com/questions/7072885/json-decode-returns-null-with-php-nfl-api/7072934#7072934)が正しいと思います。 – hakre

答えて

2

空の配列要素が

["Thu","7:30","Final",,"BAL","6","PHI","13",,,"55424",,"PRE1","2011"] 
        ^Here    ^Here ^Here 
あなたが複数のコンマの間に空の文字列を挿入しようとすることができ

の間には値を持つ複数のカンマすなわち、JSON無効です(ありがとうhakre)、すなわち

$json = preg_replace('/,(?=,)/m', ',""', $json); 
// I'm dubious about this working, don't have PHP to test but it works in JS 

これがデータの使用を続けるあなたの能力を混乱させるかどうかわかりません

+0

ありがとう - 私はこれについて何かできますか? – psarid

+0

@user私の更新された回答を参照してください – Phil

+1

私はそれらのカンマも疑います。これは値の数値インデックスを台無しにするので、1つに置き換えるべきではありません。どのように要素を空の文字列にするのですか? – hakre

1

私はPhilと同じ結論になりましたが、それは約5分長くかかりました。 :)

しかし、私は彼の出力に問題を感じた...それはフィールドをドロップしています。

RegExでこの種のパターン検出を行うのは好きではありません。これは、維持しにくいと思うからです。この場合、私はwhileループを実行します。

while (strpos($json,',,')) 
{ 
    $json = str_replace(',,',',"",', $json); 
} 

私はフィルが適切な正規表現を考え出すことができると確信していますが、このソリューションは、エントリ&序位置の右#を維持します。 2014年に新しいフィードデータのリンクをお探しの方のために

+0

明らかに、私は今日はちょっと遅いです。彼の更新された答えは元の問題を緩和する。 –

関連する問題