jq进行json数据解析

谁说我不能喝 提交于 2020-02-11 09:29:39

jq进行json数据解析

学习了:https://www.jianshu.com/p/6de3cfdbdb0e

https://blog.csdn.net/u011641885/article/details/45559031

https://www.cnblogs.com/tinywan/p/7684414.html

使用man可以查看详细帮助,太强大了;

➜  yiqing cat a.json|jq '.'
{
  "another": 1,
  "all": {
    "a0": {
      "a1": {
        "a2": [
          {
            "a3": "a3",
            "lng": 1,
            "lat": 2
          },
          {
            "a32": "a32",
            "lng": 1,
            "lat": 2
          }
        ]
      }
    },
    "b0": {
      "b1": {
        "b2": [
          {
            "b3": "b3",
            "lng": 1,
            "lat": 2
          },
          {
            "b32": "b32",
            "lng": 1,
            "lat": 2
          }
        ]
      }
    }
  }
}

a获取多个属性,逗号分隔,可以列出不包含的

➜  yiqing cat a.json|jq '.all|.a0,.b0,.c0'
{
  "a1": {
    "a2": [
      {
        "a3": "a3",
        "lng": 1,
        "lat": 2
      },
      {
        "a32": "a32",
        "lng": 1,
        "lat": 2
      }
    ]
  }
}
{
  "b1": {
    "b2": [
      {
        "b3": "b3",
        "lng": 1,
        "lat": 2
      },
      {
        "b32": "b32",
        "lng": 1,
        "lat": 2
      }
    ]
  }
}

b可以直接按照数据来进行过滤

➜  yiqing cat a.json|jq '.all|.[]'
{
  "a1": {
    "a2": [
      {
        "a3": "a3",
        "lng": 1,
        "lat": 2
      },
      {
        "a32": "a32",
        "lng": 1,
        "lat": 2
      }
    ]
  }
}
{
  "b1": {
    "b2": [
      {
        "b3": "b3",
        "lng": 1,
        "lat": 2
      },
      {
        "b32": "b32",
        "lng": 1,
        "lat": 2
      }
    ]
  }
}

c不停的按照数据进行过滤,可以实现对象不停的拆解

➜  yiqing cat a.json|jq '.all|.[]|.[]|.[]'
[
  {
    "a3": "a3",
    "lng": 1,
    "lat": 2
  },
  {
    "a32": "a32",
    "lng": 1,
    "lat": 2
  }
]
[
  {
    "b3": "b3",
    "lng": 1,
    "lat": 2
  },
  {
    "b32": "b32",
    "lng": 1,
    "lat": 2
  }
]

d拆解成一个一个对象

➜  yiqing cat a.json|jq '.all|.[]|.[]|.[]|.[]'
{
  "a3": "a3",
  "lng": 1,
  "lat": 2
}
{
  "a32": "a32",
  "lng": 1,
  "lat": 2
}
{
  "b3": "b3",
  "lng": 1,
  "lat": 2
}
{
  "b32": "b32",
  "lng": 1,
  "lat": 2
}

e加上括号有可以变为数组

➜  yiqing cat a.json|jq '[.all|.[]|.[]|.[]|.[]]'
[
  {
    "a3": "a3",
    "lng": 1,
    "lat": 2
  },
  {
    "a32": "a32",
    "lng": 1,
    "lat": 2
  },
  {
    "b3": "b3",
    "lng": 1,
    "lat": 2
  },
  {
    "b32": "b32",
    "lng": 1,
    "lat": 2
  }
]

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!