2

関数の出力の検証に問題がありjson_encode()ます。

私はcURLを使用してXMLフィードを取得し、それを配列に変換し、その配列を。を使用してJSONに変換していますjson_endode()。私はあなたにcURLのものを惜しまないでしょう:

  foreach ($xmlObjects->articleResult as $articleResult) {
    $article = array(
      "articleResult" =>
      array(
        'articleId' => (string)$articleResult->articleId,
        'title' => (string)$articleResult->title,
        'subhead' => (string)$articleResult->subhead,
        'tweet' => (string)$articleResult->tweet,
        'publishedDate' => (string)$articleResult->publishedDate,
        'image' => (string)$articleResult->image
      ),
    );
    $json = str_replace('\/','/',json_encode($article));
    echo $json;
  }

これは私に次のJSON読み出しを与えています:

{
    "articleResult": {
        "articleId": "0001",
        "title": "Some title",
        "subhead": "Some engaging subhead",
        "tweet": "Check out this tweet",
        "publishedDate": "January 1st, 1970",
        "image": "http://www.domain.com/some_image.jpg"
    }
}
{
    "articleResult": {
        "articleId": "0002",
        "title": "Some title",
        "subhead": "Some engaging subhead",
        "tweet": "Check out this tweet",
        "publishedDate": "January 1st, 1970",
        "image": "http://www.domain.com/some_image.jpg"
    }
}

これにより、次のようなJSONLintエラーが発生します。

Parse error on line 10:
..._120x80.jpg"    }}{    "articleResult
---------------------^
Expecting 'EOF', '}', ',', ']'

したがって、当然、コンマを追加します。これにより、ファイルの終わりが期待できます。

Parse error on line 10:
..._120x80.jpg"    }},{    "articleResu
---------------------^
Expecting 'EOF'

私はJSONを初めて使用しますが、適切なJSONのフォーマットと構造についてWebサイトといくつかのリソースを確認しました。この結果から、読み取り値はガイドラインに従っていることがわかります。ポインタはありますか?

私がチェックしたリソース:

JSON.orgは当然

ウィキペディアには十分に文書化されたページがあります

W3Resource構造の良い説明がありました。

JSONLint

4

1 に答える 1

2

2つ以上のオブジェクトをjson文字列にエンコードしていたので[ ]、それらをラップする必要があります

正しい構文は

[ 
   { /* first object */ }
 , { /* second object */ }
 , { /* third object */ }
]

あなたが注意する必要があるものは

  • [ ]包む
  • オブジェクトをコンマで区切る

解決

$json = array();
foreach ($xmlObjects->articleResult as $articleResult) {
  $article = array(
    "articleResult" =>
    array(
      'articleId' => (string)$articleResult->articleId,
      'title' => (string)$articleResult->title,
      'subhead' => (string)$articleResult->subhead,
      'tweet' => (string)$articleResult->tweet,
      'publishedDate' => (string)$articleResult->publishedDate,
      'image' => (string)$articleResult->image
    ),
  );
  $json[] = $article;
}
echo json_encode($json);
于 2012-09-21T00:27:09.383 に答える