2010-12-18 33 views
4

私はOctoberにJSONコンパイラと逆コンパイラを書きました。 testsの束を他の人のJSONに対して実行した後、私はそれがうまく動作していたことに満足していました。私は主にコンパイラに焦点を当てました。なぜなら、これは通常、難しい部分であり、人々があなたに投げることができるすべての変数を理解しようとしているからです。 JSONは、宣伝されているように、扱いがとても簡単でした(簡単ではありませんが、イホのように)。どんなに。JSONでリストを使用する場合

ここで、牽引力を得るようなフォーマットがあります。newsのストリームのJSONificationは、River2で表示されます。このデータのレンダリングでは、Javascriptのデベロッパーはworkingですが、そのうちのいくつかは既に使用しているものよりも優れていますが、まだ切り替えるにはまだ機能していません。

しかし、JSONに問題があります。

ニュースビットの各グループは、フィード名、URL、フィードが最後に読み取られたときのようなスカラーデータの束として編成されます。次に、1つ以上のニュース項目があります。 1つの項目がある場合は、itemという名前の構造体を追加するだけです。複数ある場合は、構造体のリストを含めます。リストの名前はitemです。これはJSONの要素を繰り返すための規約だと分かりました。上記のスクリーンショットで

http://scripting.com/images/2010/12/17/jsonShot.gif

、二つの "updatedFeed" 要素があります。最初のアイテムには1つのアイテムしかなく、2番目のアイテムには複数のアイテムがあります。

これは、(明らかに)タイプを知っていないオブジェクトを事前に処理するのが難しいため、一部の言語では問題が発生します。だから彼らは解決策は簡単だと言い、常にそれをリストにします。彼らのために簡単ですが、...-)

しかし、これは私の最後には簡単ではありません。私はジェネリックJSONシリアライザを使用しているので、 "item"は常にリストでなければなりません。そうでない限り...

これに対処する1つの方法(私は好きではない、やりたくない)はすべてをリストにすることです。

このような状況でJSONを生成する他の環境が何をしているのか不思議でした。

+2

"item"は通常1つの項目を表します。シーケンスが実際には単一の要素しか持たないとしても、シーケンスを意味するので、「アイテム」と呼ぶほうが良いでしょう。 –

+1

どのような場合でもリストを作成できないのはなぜですか?アプリケーションでデータがどのように表現されていますか?どのような言語を使用していますか? – jwueller

+2

私は、レベルを下げて、JSONに変換している言語について話をするのに役立つと思います。 Frontierを使用したことはありませんでしたが(実際にはそれを突き止めただけですが)、単一エントリ配列/リストから始めて、シリアライザに問題がないはずです。 – ohmantics

答えて

2

JSONはシリアル化形式です。同じ(予想される)オブジェクトが毎回同じスキーマを持つ場合、または受信者が柔軟になるように構築されている場合や、変化する部分を無視する場合は、一般的に最も効果的です。

この場合、ニュースストリームは常に同じ形式でなければならないと思うので、JSONに「コンパイル」しているオブジェクトを微調整して、常に同じ構造を持つようにするか、 JSON Schemaのようなものを使用してください。

関連する問題