首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以获得“”文件的差异?

是否有一种方法可以获得“”文件的差异?
EN

Stack Overflow用户
提问于 2016-02-17 23:37:47
回答 2查看 1.5K关注 0票数 1

是否有一种方法可以获得JSON Lines文件的差异?如果出现混淆,我指的是所描述的这里格式,它基本上要求每一行都是有效的JSON结构。无论如何,有一个答案这里讨论了如何使用jq来区分两个不同的JSON文件。

然而,问题是,这个问题不想让差异考虑列表内的排序,而我关心的是排序。此外,答案包含jq脚本,这些脚本只给出真实或错误的响应,而不给出完全的差异。理想情况下,我想要一个完整的差异化。有一个名为杰森-迪夫的项目调用它可以对JSON文件进行区分,但是它只对一个JSON实体起作用,而不适用于JSON行。

重申一下,是否有一种方法或类似于jq脚本的方法可以获得JSON行格式化文件的差异?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-18 03:40:57

如果我正确地理解了这个问题,下面的人就应该做好这项工作。我假设您可以访问JQ1.5,其中包括筛选器Mac /1(如果不是这样的话,那么很容易用定义来补充下面的文件,这可以在web上找到,例如src/builtin.jq文件),并且您有一个相当现代化的Mac或Linux样shell。

(1)使用以下两行创建一个名为jq-diff.jq的文件:

代码语言:javascript
复制
def sortKeys: to_entries | sort | from_entries;
walk( if type == "object" then sortKeys else . end )

(2)假设两个包含JSON实体的文件是FILE1和FILE2,然后运行以下命令之一,这取决于您是否希望对每个文件中的JSON实体进行排序:

代码语言:javascript
复制
diff <(jq -cf jq-diff.jq FILE1 | sort) <(jq -cf jq-diff.jq FILE2 | sort)

# OR:

diff <(jq -cf jq-diff.jq FILE1) <(jq -cf jq-diff.jq FILE2)

简要说明:

jq在这里的作用是对对象中的键进行排序(不对数组进行排序),并以标准的方式打印它们,每行一个( -c选项提供)。

票数 2
EN

Stack Overflow用户

发布于 2016-02-18 17:51:07

您可以使用-s标志将换行符分隔的JSON对象读入包含它们的JSON数组中,从而使它们符合与json-diff比较的条件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35469941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档