31

JSONスキーマ標準とそれに対応するphp実装を探していました。そこにいくつかのオープンソースを期待していましたが、phpの実装が1つしかないことに驚きました。私は、このテクノロジー(JSON)とスキーマlibを使用して、着信ブラウザー要求を解析しようとしていました。

この自然な解析/検証アクティビティはXMLでは自然に見え、なぜこれがJSONでは当てはまらないのか不思議に思います。

私は疑わしい状況になってしまいます。JSON構造のデータ交換を追求する必要がありますか、それともXMLに切り替える必要がありますか? 最初にJSONを選択したのは、XMLに比べて構文が単純で冗長性が少ないためですが、世界の既存の標準をすべて再開発する必要がある場合、これらの議論は軽くなります。また、Webサーバーとモバイルアプリ間の通信のサイズを制限することを期待してJSONを選択しました。コメットアプリで遊んでいるXMPPは、Google、Facebookなどの有名企業によって、リアルタイムのチャットチャットテキストやビデオベースのメッセージに実装され、使用されているようです。

したがって、実際の質問は次のとおりです。

  1. JSONは、トラフィックで何が起こっているのかを知り、単純さよりも重視したい貧しいWebサーバー開発者向けですか(誤解しないでください。ここでは、自分自身を含めます)。
  2. サーバー側(PHP)には実装がほとんどないため、JSONスキーマのIETFドラフトは深刻な作業ですか?
  3. 何かが足りないのでしょうか、それとも、xmlでデータをサーバーに送信し、json応答を期待するのが最善の通信パターンですか(多くのjsonスキーマ実装がjavascriptに存在します)?
  4. それとも、JSONを使用するWeb開発者が受信リクエストデータを深くテストしていないため、この懸念が開発者コミュニティによって十分に提供されていないという実際の証拠に直面しただけでしたか?

私が理解するのを手伝ってください、私はここでいくつかの経験を逃していますか?

4

4 に答える 4

11

この自然な解析/検証アクティビティはXMLでは自然に見え、なぜこれがJSONでは当てはまらないのか不思議に思います。

JSONを有名にした理由を思い出してください。JavaScriptで記述された非常に豊富なユーザーインターフェイスを備えたWebアプリケーションです。サーバーからのデータがJavaScriptオブジェクトに直接マッピングされるため、JSONはそのために最適でした。AjaxでGETURLをヒットし、オブジェクトを取得します。解析などは必要ありません。

これらの豊富なインターフェースにより、JavaScriptは非常に人気のある言語になり、JSONは明らかに人気があり、その人気により、「アングルブラケット」を打倒するのに最適な候補になりました。

しかし、XMLには長い歴史があります。これは、多くの仕様が付随する成熟したテクノロジーです。JSONはそれらに追いついています。

ドラフト仕様は2011年5月に期限切れになりましたが、JSONスキーマのサポーターは、仕様の最終バージョンにかなり近いと考えています。では、JSONスキーマの将来がどうなるかは誰にもわかりません。

驚いたことに、phpの実装が1つしか見つかりませんでした[...]サーバー側(PHP)には実装がほとんどないため、JSONスキーマのIETFドラフトは深刻な作業ですか?

このPHP実装は、JSONスキーマドラフトの最後のバージョンに従ってJSONを検証しますか?はいの場合、他の実装が必要ですか?仕様が深刻であることを証明するために多くの実装が必要ですか?これは、MicrosoftがわざわざXSLT 2.0を実装しなかったため、XSLT2.0は深刻ではないと言っているのと同じです。

最後の質問として、受信データを検証する必要があります。ユーザーリクエストを受け取ってサーバーにスローし、「固執することを願っています」。あなたはそれを検証します。また、JSONスキーマはJSONデータを検証する唯一の方法ではないため、JSONを使用するWeb開発者が受信リクエストデータを詳細にテストしないと想定しないでください。

結論として、私が言おうとしているのは、JSONはXMLを完全に置き換えることはできないということです。したがって、必要に応じて各テクノロジーを使用してください。

于 2012-03-25T17:41:10.807 に答える
7

あなたはあなたの質問で多くの異なることを尋ねます、そして私はあなたが本当に探しているものを正しく捕らえたかどうかはわかりませんが、ここにいくつかの考えがあります:

JSONとXMLの両方でデータを表現できますが、それらまったく異なります。ここでは正確にしようとはしませんが、正しいアイデアを提供したいと思います。

  • JSONは、キー/値と値のリストを(逆)シリアル化して渡すための軽量な方法です。軽量で、簡単で便利で、XMLよりも読みやすいと主張する人もいます。シリアル化/逆シリアル化は、すべての言語で簡単に実行できます。

  • XMLは拡張可能なマークアップ言語であり、データを表すだけでなく、データに関するルール(または必要に応じてプロトコル)も指定します。

これは、スキーマを提供するだけではありません。プロトコルを表すためにXMLを選択するXMPPについて言及しているので、次の例を検討してください。

<album>要素が定義されている場所で音楽情報を交換するように設計されたXMLベースの表現であるとしましょう。

<album>The Contino Sessions</album>

このXMLを解析するために開発されたクライアントは、タグの解釈方法を知っています。さて、Foo Barは後で登場し、それを次のように拡張するプロトコルに基づいて構築される可能性があります。

<album foobar:genre="Electronica">The Contino Sessions</album>

名前空間について何も知らない古いクライアントは、foobarを無視して通常どおり動作し続けますfoobar:genre。を理解するために拡張されたものはfoobar、ジャンルの注釈を解析します。これは、XMLが単なるデータ表現ではないことを例で示しています。JSONで同じことをどのように行うかを考えてみてください。あなたはあなたが同じコストレイントではできないことに気付くでしょう。これが、たとえばXMPPの実装をJSONで実行できる可能性が非常に低い理由です。

とはいえ、XMLには独自の負担があります。優れたXMLパーサーを構築するのは困難です。単純なシリアル化にXMLを使用することはさらに困難です。人間の読みやすさは、長い文書などを理解することになると、頭痛の婉曲表現です。

要するに:

  • JSONを介してデータを渡すだけの場合は、問題なく簡単です。

  • サードパーティのXMLによってさまざまな方法で拡張されるプロトコルを開発する場合は、その方法です。

  • 前後の変換は悪い考えです。XMLをJSONに変換するだけでは不十分です。

于 2012-03-25T10:42:47.323 に答える
5

データ交換には多くの選択肢があり、ここでは2つの人気のあるテクノロジーを検討しています。XMLは一般的にJSONよりも大きいですが、XMLはより柔軟性があり、より多くのことを実行できます。砂糖に関しては、コーラやダイエットコーラのように。

XMLを提供するサービスがある場合は、XMLをJSONにシリアル化して両方を提供するアダプターを作成してみませんか。別のレイヤーを追加して、再開発を避けたいだけです。

読んでください。 http://www.thomasfrank.se/xml_to_json.html

HTTP圧縮は、XMLファイルをネットワーク全体で小さく保つのにも役立ちます。

私の言う。複雑なデータの場合はXMLを使用し、単純なデータの場合はJSONを使用します。両方使用します。

未来はどうですか?わからないと言います。

乾杯!

于 2012-03-25T03:29:32.773 に答える
2

この便利なGoogleグループ#json-schemaJSON Schema:JSONデータ構造の指定と検証を見つけました。

于 2012-03-25T03:44:04.833 に答える