【发布时间】:2015-04-06 03:44:27
【问题描述】:
我是 Json 的新手,即 JSON PATCH。 我有一个场景,我需要找出同一对象的两个版本的 Json 文件之间,因为我正在使用 json-patch-master。 但不幸的是,补丁生成的解释不同,即顺序不同,因此得到意外/无效的结果。 谁能帮我在生成 Json Patch 时如何保留订单?
**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
【问题讨论】:
-
有趣的问题!我帮助维护的一个库 (github.com/Starcounter-Jack/JSON-Patch) 也遇到了这个问题:jsfiddle.net/warpech/1epzuoj3。我认为对于本机支持
Array.observe的浏览器可以修复它。但对于较旧的浏览器,需要进行昂贵的脏检查。
标签: json validation getjson geojson json-patch