RFC 7396 - JSON 合并补丁 - 更新列表中的对象
RFC 7396 - JSON Merge Patch - Updating objects in a list
RFC 7396 指出:
If the patch is anything other than an object, the result will always be to replace the entire target with the entire patch. Also, it is not possible to patch part of a target that is not an object, such as to replace just some of the values in an array.
例如,如果我有这个文件:
{
"id": 1,
"brand_name": "BMW",
"cars": [{
"id": 2,
"model": "S1",
"cost": 10000
}]
}
据我了解,我无法部分更新 ID #2 的汽车以更新成本,例如:
{
"id": 1,
"cars": [{
"id": 2,
"cost": 20000
}]
}
(这里的想法是不修改模型,只修改成本。ids 只是为了协调)
对吗?
如果是这样,为什么我们不能应用这个算法来处理列表:
- 将汽车列表的实际表示与补丁表示进行比较:
- 如果补丁表示中缺少一项 => 将其删除
- 如果添加了一个没有调节标识符的项目 => 添加它
- 如果一个项目在两种表示中都存在 => 在对象级别将其修改为常规 PATCH
这现实吗?
RFC 7396 指出:
If the patch is anything other than an object, the result will always be to replace the entire target with the entire patch. Also, it is not possible to patch part of a target that is not an object, such as to replace just some of the values in an array.
例如,如果我有这个文件:
{
"id": 1,
"brand_name": "BMW",
"cars": [{
"id": 2,
"model": "S1",
"cost": 10000
}]
}
据我了解,我无法部分更新 ID #2 的汽车以更新成本,例如:
{
"id": 1,
"cars": [{
"id": 2,
"cost": 20000
}]
}
(这里的想法是不修改模型,只修改成本。ids 只是为了协调)
对吗?
如果是这样,为什么我们不能应用这个算法来处理列表:
- 将汽车列表的实际表示与补丁表示进行比较:
- 如果补丁表示中缺少一项 => 将其删除
- 如果添加了一个没有调节标识符的项目 => 添加它
- 如果一个项目在两种表示中都存在 => 在对象级别将其修改为常规 PATCH
这现实吗?