繁体   English   中英

使用jq排序json文档

[英]sort json document using jq

我有一个JSON文档(SSAS表格模型.bim文件)

它的完整结构附有示例json,但如下所示是嵌套的对象结构。 每个对象都有一个我想用来排序的name属性

{
"name": "SemanticModel",
"compatibilityLevel": 1200,
"model": {
"culture": "en-US",
"dataSources": [
  {
    "name": "BlahDW",
    "connectionString": "Provider=SQLOLEDB;Data Source=sql.blah.com;Persist Security Info=false;Integrated Security=SSPI;Initial Catalog=Blah",
    "impersonationMode": "impersonateAccount",
    "account": "blah\\blah",
    "annotations": [
      {
        "name": "ConnectionEditUISource",
        "value": "SqlServer"
      }
    ]
  }
],
"tables": [
  {
    "name": "Employees",
    "isHidden": true,
    "columns": [
      {
        "name": "Employee Key",
        "dataType": "int64",
        "isHidden": true,
        "isUnique": true,
        "isNullable": false,
        "sourceColumn": "Employee Key"
      },
      {
        "name": "Employee Code",
        "dataType": "string",
        "isHidden": true,
        "sourceColumn": "Employee Code"
      },
      {
        "name": "Employee Name",
        "dataType": "string",
        "isHidden": true,
        "sourceColumn": "Employee Name"
      },
      {
        "name": "Home Village Code",
        "dataType": "string",
        "isHidden": true,
        "sourceColumn": "Home Village Code"
      }
    ],
....

我已经尝试过这里提到的walk / 1方法, 如何使用jq完全对任意JSON排序? 但这不起作用,因为它没有尝试对我不认为的集合中的对象进行排序。

我发现这可以通过“ .model.tables | = sort_by(.name)”来对一个集合进行排序 (这要归功于如何通过jq中的键和键值对json文件进行排序 ),但我无法解决结合步行,所以我不需要显式重新创建相同的json结构

我在这里只能掌握我的jq知识,所以想知道是否有人可以将我带入正确的方向

您可以按“名称”对所有数组进行排序,同时保持其他所有内容不变,如下所示:

walk(if type == "array" then sort_by(.name) else . end)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM