2016-03-29 5 views
0

既存のRESTサービスの1つを使用してクライアントアプリケーションを開発する際に、JSONまたはXML応答を使用する選択肢があります。 XML応答は、スキーマ情報を持つXSDファイルによって記述されます。クライアントがJSON RestResponseのデータ型を知る方法

これらのXMLスキーマでは、特定の結果がどのデータ型であるかを判断でき、クライアントはデータをユーザーに提示するとき、またはクライアントにユーザーにプロパティの変更を要求するときにその情報を使用できます。 (XSDスキーマをサポートするXMLのマルチプラットフォームのDelphi実装を見つけることができないので、どうやって別の質問をbtwでやめたらいいですか?

代わりに、JSON応答タイプを使用しますが、すべてが文字列として送信されるため、クライアントはプロパティの特定のデータ型を判別できません。

クライアントは、これらのプロパティの1つが、列挙型のインデックスか、整数か数値か、ID別の別のオブジェクトへの参照かどうかをどのように知っていますか? (これらは単なる例です) 私は、クライアントがレスポンスの構造について「ハードコードされた」情報を含んでいてはいけないと思いますか、それとも間違っていると思いますか?

+2

"ハードコーディングされた"情報は、アプリケーションが知るべきコンテキストです。 HumptiDumptiが何であるか知らずにHumptiDumptiの列挙であるという情報を持つことのメリットは何ですか?答えが得られたら、質問と文脈を知っておくべきです。 –

答えて

3

JSONにはXMLのようなリッチタイプのシステムはなく、JSONには列挙型やXMLのような参照を記述するためのスキーマシステムはありません。

  1. 文字列を:しかし、任意の値が(詳細は公式JSON specを参照)を使用しているJSONはわずか数のデータ型を持っている、とJSONの一般的なフォーマットは、どのようなデータ型の観点で自己記述であります常に引用符でラップされている:

    "fieldname": "fieldvalue" 
    
  2. 数値が引用なし桁の文字です:

    "fieldname": 12345 
    
  3. OB JECTは常に中括弧に包まれている:

    "fieldname": { ... object data ... } 
    
  4. アレイは常に角括弧に包まれている:

    "fieldname": [ ... array data ... ] 
    
  5. ブールは常に引用なく固定true又はfalseである:

    "name": true 
    

    "name": false 
    
  6. nullは常に引用なし固定nullです:それを超え

    "name": null 
    

ものは、以来、XMLのスキーマのように(送信されるデータの外部知識を持っているクライアントが必要になりますXML自体にはデータ型はまったく記述されていません)。

関連する問題