node.js - 查找 JSON 数据之间的差异并更新差异
问题描述
我被困了几个小时,我需要你的帮助。
要求是这样的。
有两个 JSON 对象,其中一个始终是source
我们需要的所有数据。第二个
JSON 对象不包含来自source
要求:
这是源 JSON 对象。
{
"lang": "en",
"global": {
"clear_search": "Clear Search",
"filter": "Filter",
"projects": {
"sort_projects": "Sort projects by"
},
},
}
这是第二个对象(注意:第一个对象总是包含更多数据):
{
"lang": "de",
"global": {
"clear_search": "Suche löschen",
"filter": "Filter",
},
}
我需要:
source
找出与对象 2之间的差异- 更新差异,从
source
对象 2 - 如果 的属性
source
是一个对象,循环遍历它,这意味着如果它是嵌套的,我需要循环遍历它,(递归)。 如果键相同,但值不同,则保留键但使用对象 2 值。
结果:
{
"lang": "de",
"global": {
"clear_search": "Suche löschen",
"filter": "Filter",
"projects": {
"sort_projects": "Sort projects by"
},
},
}
感谢您检查这一点,我恳请您不要发布带有变量名称的代码,例如x
or _
。
解决方案
您可以以树的形式表示 json。树中的每个节点都将代表一个 json 键。两棵树的根并行 dfs 将帮助您标记两棵树共有的键。未标记的键将有所不同。
您可以扩展此 dfs 遍历以进一步使用缺少的键填充第二个 json。
推荐阅读
- excel - 提取单个单元格中 $ 符号内多次出现的文本
- c++ - 犰狳文档不是最新的?
- c# - '找不到方法:'System.Security.PermissionSet System.AppDomain.get_PermissionSet()'。' 调用 dbContext.Set 时
- python - 按新列分组而不添加它
- sql-server - 在 SQL Server 上插入数据时如何填补身份空白?
- javascript - 如何使用扩展运算符来展平javascript中的对象数组
- javascript - 基于条件的VueJS HTML元素类型
- javascript - Number.EPSILON 和 Number.MIN_VALUE。为什么两个不同?
- amazon-web-services - 使用 AWS Lambda 时如何限制来自 Cloudwatch 的不需要的日志?
- java - UnitTest - 测试方法总是返回空地图