Javascript 当请求json和响应json相同时,希望仅使用更新的字段创建相同的json对象
我有正常的HTML UI来查看和更新,并使用Angular js调用rest服务 我调用rest服务display和update,这两个服务共享相同的json对象 显示响应Javascript 当请求json和响应json相同时,希望仅使用更新的字段创建相同的json对象,javascript,html,angularjs,json,Javascript,Html,Angularjs,Json,我有正常的HTML UI来查看和更新,并使用Angular js调用rest服务 我调用rest服务display和update,这两个服务共享相同的json对象 显示响应 { "Name": "ABC", "Address": { "city": "XYZCity", "Phone": { "Mob": 898998888, "Tel": 56556 } } } 现在让我们
{
"Name": "ABC",
"Address": {
"city": "XYZCity",
"Phone": {
"Mob": 898998888,
"Tel": 56556
}
}
}
现在让我们假设我已经将“Mob”和“city”更新为88888888和ABCCity,我只需要在相同的更新请求中发送这些更新的字段,如
更新请求
{
"Address": {
"city": "ABCCity",
"Phone": {
"Mob": 888888
}
}
}
有没有办法,我可以这样做。在调用API之前,在数据对象中将
名称,Tel
设置为未定义,如下所示
let data = {
"Name" :"ABC",
"Address": {
"city": "XYZCity",
"Phone": {
"Mob": 898998888,
"Tel": 123
}
}
};
data.Name = undefined;
data.Address.Phone.Tel = undefined;
数据
对象将在同一请求中通过网络发送,如下所示
{
"Address": {
"city": "XYZCity",
"Phone": {
"Mob": 898998888
}
}
}
理想情况下,您应该维护数据对象的浅拷贝。然后,在发送请求之前,将原始数据对象的每个成员与其副本进行比较,只发送已更改的成员 以下是如何: 让dataCopy=angular.copy(数据) 对您的
数据对象进行更改
然后按以下方式发送:
{
"Name" : (data.Name !== dataCopy.Name) ? data.Name : undefined
}
你能编辑你的问题来提供一些背景吗?您希望如何编辑这两个变量?输入字段或行命令?不能发送部分JSON。或者是一个新的,或者是整件事。有没有简单的方法来创建一个新的并设置它?为什么你真的需要这样做而不发送整个记录?在提交时,我将整个对象发送到后端,对于他们必须调用的每个字段更新和外部服务,为了避免未更改字段的外部服务调用,我必须这样做。这只是一个示例,我有一个巨大的对象,对于每个字段,我不打算设置未定义。您应该维护数据对象的浅拷贝。然后在发送请求之前,将原始数据对象的每个成员与其副本进行比较,只发送已更改的成员。如果您找到更好的解决方案,请告知我们。谢谢。但我不确定我的答案怎么会被标记为否定。