jjh*_*son 1 javascript json typescript ecmascript-6
请原谅这个标题,因为我不确定这是否可能。
我有一个像这样的 json 模型
json 模型“数据”
{
"RegisteredAddress": "1 street, Sw3 1aq",
"TradingAddress": "2 street, sw4, 5ad",
}
Run Code Online (Sandbox Code Playgroud)
我想映射到一个看起来像这样的模型
AddressModel.ts 'addressModel'
{
"RegisteredAddress": null,
"TradingAddress": null,
"PreviousAddresses": ["Previous Address Street, RH10 1BG"]
}
Run Code Online (Sandbox Code Playgroud)
我可以使用Object.Assign(this.addressModel, data); 而不覆盖 Address.ts 模型上现有的填充属性。我本质上只想填充 json 模型中的字段,而不覆盖正在分配的 json 上不存在的任何现有属性。最终结果应该是
AddressModel.ts 'addressModel'
{
"RegisteredAddress": "1 street, Sw3 1aq",
"TradingAddress": "2 street, sw4, 5ad",
"PreviousAddresses": ["Previous Address Street, RH10 1BG"]
}
Run Code Online (Sandbox Code Playgroud)
了解我可以手动映射这些属性,但这是一个示例,我正在使用更大的模型。
如果您想用于Object.assign此目的,您可以将所有内容分配给this.addressModel最后列出的新对象:
this.addressModel = Object.assign({}, data, this.addressModel);
Run Code Online (Sandbox Code Playgroud)
这样,this.addressModel当它具有也在 中的属性时,“获胜” data。
了解我可以手动映射这些属性,但这是一个示例,我正在使用更大的模型。
模型的大小在这里并不重要,无论它是在Object.assign代码中还是在代码中,它都是一个循环。代码中的循环将类似于:
for (const [key, value] of Object.entries(data)) {
if (!(key in this.addressModel)) { // Or `!this.addressModel.hasOwnProperty(key)` or `!Object.prototype.hasOwnProperty.call(this.addressModel, key)` depending on what you want to check and your style
this.addressModel[key] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |