95

結果をJSONとして返すAPIを作成しています。値がnullの場合に結果にキーを含める必要があるかどうかについての現在のベストプラクティスはありますか?例えば:

{
    "title":"Foo Bar",
    "author":"Joe Blow",
    "isbn":null
}

また

{
    "title":"Foo Bar",
    "author":"Joe Blow"
}

2つ目は小さいのでこのスタイルに傾いていますが、好みのスタイルがあるかどうかはわかりません。クライアントの観点からは、両方のスタイルが機能的に同等であるように思われます。それぞれに賛否両論はありますか?

4

5 に答える 5

84

私は、意味を持っているので、常にnullを明示的に含めるのが好きです。プロパティを省略すると、あいまいさが残ります。

サーバーとのプロトコルが合意されている限り、上記のいずれかが機能しますが、サーバーからnullを渡すと、後でAPIがより柔軟になると思います。

また、javascriptのhasOwnProperty関数がさらに洞察を与えることにも言及する必要があります。

/* if true object DOES contain the property with *some* value */
if( objectFromJSON.hasOwnProperty( "propertyName" ) )

/* if true object DOES contain the property and it has been set to null */
if( jsonObject.propertyName === null )

/* if true object either DOES NOT contain the property
   OR
   object DOES contain the property and it has been set to undefined */
if( jsonObject.propertyName === undefined )
于 2013-08-22T22:24:40.913 に答える
32

2つ目は帯域幅を少し節約しますが、それが懸念事項である場合は、JSONにキーを入力する代わりにインデックス付き配列も使用します。明らかに、["Foo Bar","Joe Blow"]あなたが今持っているものよりはるかに短いです。

使いやすさという点では、違いはないと思います。どちらの場合も、if(json.isbn)にスキップしelseます。null通常、(値なし)と(値なし)を区別する必要はありませundefinedん。

于 2012-06-12T19:27:39.027 に答える
23

JavaScriptでは、はとnullは非常に異なることを意味しますundefined

JSON出力は、JSONデータを使用する特定のコンテキストでアプリケーションが使用および必要とするものを反映する必要があります。

于 2012-06-12T19:25:23.103 に答える
12

nullとを区別する必要がある場合はundefined、Javascriptで2つの異なる意味があるため、必ず含める必要があります。nullプロパティが不明または無意味であることundefinedを意味し、プロパティが存在しないことを意味すると考えることができます。

一方、誰かがその区別をする必要がない場合は、先に進んでそれを除外します。

于 2012-06-12T19:25:53.263 に答える
1

JSONがAPIデータキャリアとして使用される場合、nullまたは空の(未定義の)値があるかどうかに違いはありません。おそらく、ペイロードサイズをいくらか節約できるので、空の方が良いでしょう。

手作業で何かを編集したい場合は、JSON構成ファイルに違いが現れます。未定義の小道具ではなく、そこにnullを設定することをお勧めします。このようにして、構成小道具の存在についてのヒントを提供します。

于 2015-06-18T07:51:01.963 に答える