javascript中两个JSON的简单git式差异

javascript中两个JSON的简单git式差异,javascript,json,diff,Javascript,Json,Diff,让我们用例子来说明。我必须告诉你: { "a": { "b": 1, "c": 2 }, "d": false, "e": 15, "f": "something important" } 及 我想要的结果是: b: 2 => 22 e: 15 => "fifteen" f(deleted) g(created) "something new" 因此,基本上我需要一个简单的差异来显示我从后端得到的模型中发生了

让我们用例子来说明。我必须告诉你:

{
    "a": {
        "b": 1,
        "c": 2
    },
    "d": false,
    "e": 15,
    "f": "something important"
}

我想要的结果是:

b: 2 => 22
e: 15 => "fifteen"
f(deleted)
g(created) "something new"
因此,基本上我需要一个简单的差异来显示我从后端得到的模型中发生了什么变化,但我不确定我是否应该寻找一个库,或者它是否足够简单,可以用一个函数来实现。


我认为这篇文章清楚地回答了你的问题

您可以检查零件,并通过检查嵌套零件获得结果

函数getDifference(a,b){ 返回[…新集合([…对象.键(a),…对象.键(b)])]。减少((r,k)=>{ 如果(a[k]&&b[k]&&typeofa[k]==='object'&&typeofb[k]=='object'){ var temp=getDifference(a[k],b[k]); 如果(温度长度)r.push(…温度映射(([l,…a])=>[k+''+l,…a]); 返回r; } if(k在a&!(k在b)){ r、 推送([k,‘已删除’,a[k]]); 返回r; } 如果(!(a中的k)和b中的k){ r、 推送([k,‘已创建’,b[k]]); 返回r; } 如果(a[k]==b[k])返回r; r、 推送([k,'changed',a[k],b[k]]); 返回r; }, []); } console.log(getDifference( {a:{b:1,c:2},d:false,e:15,f:“重要的事情”}, {a:{b:1,c:22},d:false,e:“十五”,g:“新事物”} ));
.as控制台包装{max height:100%!important;top:0;}
也许您应该试试


非常易于使用,并提供详细的差异,包括针对差异的过滤方法和工具,例如批准更改或不批准更改。

第一步。。。将JSON解析为javascript对象-下一部分应该在您不处理Strings时自行编写git diff一点也不简单:)看看
for(x in y)
循环和
object.hasOwnProperty()
方法。这是否回答了您的问题?试试像这样的东西
b: 2 => 22
e: 15 => "fifteen"
f(deleted)
g(created) "something new"