如何使用JQ从json对象打印keyS

时间:2017-07-10 21:48:09

标签: json key jq

示例输入

{
 “event_timestamp”: “2016-03-16 13:19:53 UTC”,
 “query”: “Plagiarism”,
 “search_session_id”: “3605862756e95d26ac180",
 “version”: “0.0.2",
 “other”: “{\“client_timestamp\“:1458134393.932,\"ios_page_index\":3}“,
 “action”: “HIT_BOUNCE”
}

{
 “event_timestamp”: “2016-03-16 13:19:53 UTC”,
 “query”: “Plagiarism”,
 “search_session_id”: “3605862756e95d26ac180",
 “version”: “0.0.2",
 “other”:“{\“client_timestamp\“:1458134393.932,\"ios_page_index\":3,\"ios_index_path_row\":1}“,
 “action”: “HIT_BOUNCE”
}

我想在“其他”字段

中输出唯一键名

“client_timestamp,

ios_page_index,

ios_index_path_row“

尝试了以下命令但到目前为止无效

cat sampleexample.json | jq'.other | keys'|排序| uniq> other.json

提前致谢

1 个答案:

答案 0 :(得分:1)

  1. 示例输入不是JSON,它不允许将花哨的引号用作字符串分隔符。以下假设输入已得到纠正。

  2. .other的值是一个JSON字符串;您可以使用fromjson将字符串更改为JSON对象。

  3. sort|unique是多余的,因为unique首先对其输入进行排序。

  4. 全部放在一起:

    $ jq  '.other | fromjson | keys_unsorted | unique' input.json
    [
      "client_timestamp",
      "ios_page_index"
    ]
    [
      "client_timestamp",
      "ios_index_path_row",
      "ios_page_index"
    ]
    

    (使用keys_unsorted保存一个排序操作。)