2015-04-02 55 views
1

我是Json东西的新手,即JSON PATCH。 我有场景,我需要弄清楚两个版本的Json文件的同一对象,因为我使用的是json-patch-master。 但不幸的是,该补丁生成的解释不同,即顺序不同,因此得到意外/无效的结果。 任何人都可以帮助我如何保持秩序,同时生成JSON补丁?有没有办法在生成json文件补丁时保留顺序?

**Here is the actual example. 
Original Json file :** 

[ { 
    "name" : "name1", 
    "roolNo" : "1" 
}, { 
    "name" : "name2", 
    "roolNo" : "2" 
}, { 
    "name" : "name3", 
    "roolNo" : "3" 
}, { 
    "name" : "name4", 
    "roolNo" : "4" 
} ] 


**Modified/New Json file: i.e. removed 2nd node of original file.** 

[ { 
    "name" : "name1", 
    "roolNo" : "1" 
}, { 
    "name" : "name3", 
    "roolNo" : "3" 
}, { 
    "name" : "name4", 
    "roolNo" : "4" 
} ] 

**Patch/Diff Generated :** 

[ {"op":"remove","path":"/3"}, 
{"op":"replace","path":"/1/name","value":"name3"}, 
{"op":"replace","path":"/1/roolNo","value":"3"}, 
{"op":"replace","path":"/2/name","value":"name4"}, 
{"op":"replace","path":"/2/roolNo","value":"4"}] 

Very time I generate Diff/Patch it is giving different path/diff results. 
And moreover the interpretation is different i.e. order is not preserving. 

**Is there any way to get expected results i.e. [ {"op":"remove","path":"/1"} ] , in other words generated a patch/diff based some order so will get what is expected. ? 
How to handle this kind of scenario ?** 

Please help me. 

Thank you so much. 
~Shyam 
+1

有趣的问题!我帮助维护的一个库(https://github.com/Starcounter-Jack/JSON-Patch)也存在这个问题:http://jsfiddle.net/warpech/1epzuoj3/。我认为它可以固定支持'Array.observe'的浏览器。但对于旧版浏览器,需要进行昂贵的脏检查。 – warpech 2015-04-03 08:42:34

回答

0

我们目前正在研究这个问题在Starcounter-Jack/JSON-Patch

它似乎与本地工作很好Array.Observe - http://jsfiddle.net/tomalec/p4s7aw96/

尝试Starcounter-Jack/JSON-Patch issues/65_ArrayObserve branch 我们将发布它作为新版本一次垫片和性能将被检查。

随时为您添加评论在JSON-Patch issue board

+0

谢谢。可能我的问题有些含糊不清,让我把它说得对。当我生成差异/补丁时,它显示一个节点被删除,并且还显示其他一些节点正在被替换,实际上我只删除了一个节点。发生这种情况的原因是补丁无法保留或维护节点的顺序.....所以我需要一些方法让补丁以某种顺序生成diff,以便结果正确。 – user3252097 2015-04-06 07:48:56

+0

@ user3252097,这是目前正在进行中,请检查http://jsfiddle.net/tomalec/p4s7aw96/回购在这里https://github.com/tomalec/JSON-Patch/tree/issues/65_ArrayObserve_shim 不幸的是,它没有能力使它与Shimmed'Array.observe'一起工作,所以它仍然需要本地支持。 – tomalec 2015-04-07 08:20:49

相关问题