Javascript 当请求json和响应json相同时,希望仅使用更新的字段创建相同的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 } } } 现在让我们

我有正常的HTML UI来查看和更新,并使用Angular js调用rest服务

我调用rest服务display和update,这两个服务共享相同的json对象

显示响应

{
    "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。或者是一个新的,或者是整件事。有没有简单的方法来创建一个新的并设置它?为什么你真的需要这样做而不发送整个记录?在提交时,我将整个对象发送到后端,对于他们必须调用的每个字段更新和外部服务,为了避免未更改字段的外部服务调用,我必须这样做。这只是一个示例,我有一个巨大的对象,对于每个字段,我不打算设置未定义。您应该维护数据对象的浅拷贝。然后在发送请求之前,将原始数据对象的每个成员与其副本进行比较,只发送已更改的成员。如果您找到更好的解决方案,请告知我们。谢谢。但我不确定我的答案怎么会被标记为否定。