【问题标题】:Diff a JSON Object in an existing one区分现有对象中的 JSON 对象
【发布时间】:2015-05-07 13:28:59
【问题描述】:

我有两个 JSON 对象的问题。 我通过 JSON 获得我的视图,当我更新我的网站时,我只想显示更改,而不是再次渲染整个网站。

我的意思是,当我第一次加载我的网页时,我得到一个 JSON 对象,类似这样:

{
    "WindowObject": {
        "name": "test",
        "type": "container",
        "children": [
            {
                "name": "childOne",
                "type": "string"
            }
        ]
     }
}

当我按下按钮时,我会得到一个新的 JSON 对象,其中包含更新的视图,例如:

{
    "WindowObject": {
        "name": "test",
        "type": "container",
        "children": [
            {
                "name": "childOne",
                "type": "input"
            },
            {
                "name": "childTwo",
                "type": "string"
            }
        ]
     }
}

我使用 AngularJS 指令渲染这些信息,并且效果很好。但问题是,整个网站再次使用“新”对象呈现,而不是仅仅更改新内容。

所以现在我想在旧数组中“集成”或“区分”新数组,以便再次呈现更改后的内容。

有人有想法吗?

【问题讨论】:

  • 试试$.extend(oldJson, newJson) - api.jquery.com/jquery.extend - 像这样,旧的json随着新的变化而更新。
  • 当您的 Json 模型发生变化时,您可以在该指令中使用 d3.js 来创建、更新和删除 DOM 元素。 It is explained here
  • 这与 JSON 本身无关。你想“区分”一个 DOM 树。
  • @ErikWillems Angular 在正确使用时已经做到了……为什么还需要另一个库呢?
  • @Griessbrei 您的最后一条评论表明您实质上是通过每个操作重新生成 JSON 以表示整个应用程序状态,这似乎是一个非常糟糕的设计。

标签: javascript jquery json angularjs


【解决方案1】:

您可以查看json diff github 以获得您的解决方案。基本上,它适用于 json 的 DOM/Tree 结构。它迭代/解析到 json 中的所有节点,然后找到差异,如 cmets 中所述。

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 2011-09-23
    • 2011-07-31
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多