2013-10-27 5 views
20

JSONオブジェクトのリストを扱うWebサービスを作成したいと思います。次のことを返すために有効なJSONです:リスト/配列は有効なJSONですか?

[ 
    {"keyA1":"valA", "keyB1":"valB"} 
,{"keyA2":"valA", "keyB2":"valB"} 
,{"keyA3":"valA", "keyB3":"valB"} 
] 

それとも返すために、単一のオブジェクトにそれを置くためにそれを行うには「正しい」方法です:

{"elements":[ 
    {"keyA1":"valA", "keyB1":"valB"} 
    ,{"keyA2":"valA", "keyB2":"valB"} 
    ,{"keyA3":"valA", "keyB3":"valB"} 
]} 
+2

両方とも動作します。ご不明な点がありましたら、JSONを[jsonlint.org](http://jsonlint.org/) –

+0

http://jsonlint.com/で "valid json"と確認してください。 – meagar

答えて

30

両方の形式が有効です。しかし、APIの場合は、2番目のフォームをお勧めします。その理由は、それがあなたにあなたのAPIの拡張の道を与えるからです。

たとえば、ユーザーオブジェクトの配列を返すAPI getUsersInGroupを持っていて、後で返されるユーザーに関するいくつかの集計統計を含めることを決定した場合、それを簡単に行うことはできません(または各ユーザオブジェクト内に多数の冗長データを含む)。オブジェクトを使用する場合は、オブジェクトに別のフィールドを追加するだけで、以前のバージョンのAPIでクライアントによって黙って無視されます。

要するに、APIで可能な限りトップレベルのプリミティブを避けるようにしてください。将来的には簡単に拡張することができます。

3

あなたはhttp://jsonlint.com/

を使用してJSONを検証することができます

両方とも有効なJSON結果ですが、2番目のJSON結果を使用します。それはより論理的で説明的です。

3

どちらも有効なJSONですが、2番目の方法は正しいです。 JSONを配列として渡すと、セキュリティ上の脆弱性が生じる可能性があります。詳細については、JSONセキュリティのrelated postをご覧ください。フラスコのようなフレームワークでは、JSONを配列として渡すことを妨げる措置もあります。

関連する問題