JSONからオブジェクトを作成しようとしています。帯域幅を節約するためにネストしたオブジェクトのデフォルトのフィールド値
a: {
name: "A name",
b: {
c: {
d: []
}
}
}
、空の配列と空のオブジェクトをJSONから取り除かれるように私のオブジェクトの
一部が見えますので、私はちょうど変換する場合は、私が受け取るJSONは
{ "a": { "name": "A name" }}
ですオブジェクトへのJSONの場合、undefined
には長さがないため、これはa.b.c.d.length
のようなものを実行しようとするとエラーになります。現時点で
は、私が
const json = getJson();
const obj = {
...json,
a: {
...json.a,
b: {
...json.a.b,
c: {
...json.a.b.c,
d: json.a.b.c.d || []
}
}
}
};
のようなもので欠落しているフィールドを移入していますこれはかなり冗長で、デフォルト値を必要とするいくつかのフィールドがある場合でも、醜い取得する予定です。
明白な解決策の1つは、送信されたJSONから空の配列を削除しないことです。それが不可能であると仮定して、このケースを扱う良い方法はありますか?
実際のケースでは、各レベルに複数のフィールドがあるため、すべてのスプレッド演算子が必要です。 (そうでない場合でも、将来的に構造が拡大する可能性があるため、それらを含めることができます)
編集:私はJQueryを使用していません。私はwhatwg-fetchを使ってデータを検索しています。
@damaあるIそれがあなたが思っているように細かい制御として達成するとは思わない。 askerは '{a:{b:{c: 'hello'}}}、{a:{d:{e: 'さようなら}}})'実際にちょうど '{a:{d:{e: 'さようなら'}}}' **を取得します**私の間違い、オプションの第1引数 'deep'を忘れました。これは動作します: '$ .extend(true、{a:{b:{c: 'hello'}}}、{a:{d:{さようなら}}})' –