我们正在使用PentahoCTools库构建一个网站,该库有一个图形化 Jmeter 板编辑器,它可以为 Jmeter 板的一部分写出JSON格式的文件。
我想在签入git之前对这些文件进行一个转换,以便先按键排序,然后再按键的值排序,这样做的目的是让diffs更容易,因为编辑器有重新排列所有json字段的习惯。
例如,我们可能会有这样的东西:
{
"components": {
"rows": [
{
"id": "CHARTS",
"name": "Charts",
"parent": "UnIqEiD",
"properties": [
{
"name": "Group",
"type": "Label",
"value": "Charts"
}
],
"type": "Label",
"typeDesc": "<i>Group</i>"
},
{
"id": "kjalajsdjf",
"meta_cdwSupport": "true",
"parent": "CHARTS",
"properties": [
{
"name": "name",
"type": "Id",
"value": "Value1"
},
{
"name": "title",
"type": "String",
"value": "Value2"
},
{
"name": "listeners",
"type": "Listeners",
"value": "[]"
},
...
我们可以使用jq --sort-keys
(http://stedolan.github.io/jq/)对所有键进行排序,但是我很难找到如何使用sort_by
函数,然后根据某些键的值对某些特定的元素进行排序(因此,在上面的示例中,例如按properties.name
排序。
3条答案
按热度按时间qij5mzcb1#
好吧,在IRC频道的帮助下,我找到了答案。
基本上,它看起来是这样的:
选择正确的对象,
如果需要,进入数组,
则
sort_by
为单个值。我正在尝试
sort_by(.components.rows.id)
,但失败了。|=
而不是|
传递值沿着而不是剥离它们。ifmq2ha22#
这并没有回答这个问题,但这里有另一种按属性/键排序的方法:
5tmbdcev3#
如果您需要在JQ查询中使用它,请访问: