JSONオブジェクトをスキーマに対してチェックし、一致しない場合はエラーを返すJSONバリデータを使用しています。私がしなければならないことの一つは欠落している属性を追加することですが、これらは潜在的に構造が深刻な可能性があります。バリデータのエラーは、この形式の文字列として不足している属性の位置を返します:「データ」文字列をオブジェクト表記に変換する方法
'data.thing1.thing2.thingN'
私は取り除くことができます少しでも簡単にはできますが、残りの部分をどのように深く変換してオブジェクトの表記を修正するかはわかりません。これは私が今までに持っているものです:
var attributeLineage = newField.split(".");
obj[attributeLineage[0]][attributeLineage[1]] = "";
明らかにこれは、2つのレベルの深さしかない場合にのみ機能します。私はattributeLineage
の値をループし、それらをすべてリンクして、指定されたオブジェクトの不足している属性を正しく構築する必要があります。これはどうすればできますか?
私は何かが完全に明白でないか、間違った方法で行こうとしているかもしれませんが、どのように進めるかは分かりません。
私は(それがリンクさよりも便利だけれども答えは「複製」)は、このアプローチによって困惑ビットです。私はあなたがテストとしてOBを作成していると思ったが、それはあなたがやっていることだとは思わない?不足している属性を追加する必要がある既存のオブジェクトがあります。私があなたのアプローチを試みるとき、o [k]はしばしば未定義であり、objは常に未定義に終わります。 私は、既存の属性に値を入力するのではなく、属性を追加する必要があると思います。 –
@KatharineOsborne:更新されたものを確認してください –
ああクール!私はreduceの返り値を次のように変更しなければならなかった:return o [k] ||終了属性は決してオブジェクト自体ではなく、このビットを残したままであるため、オブジェクト(o [k] = "")&& o[k];が返されます:obj [prop] = ""; –