簡體   English   中英

我在使用 jq 將 JSON 文件解析為 a.csv 文件時需要幫助

[英]I need assistance in parsing a JSON file to a .csv file using jq

好的,所以這是需要解析的相當簡單的 JSON 源文件......

{
  "status": "ok",
  "meta": {
    "count": 10
  },
  "data": {
    "1040918564": [
      {
        "statistics": {
          "wins": 166,
          "battles": 441
        },
        "mark_of_mastery": 1,
        "tank_id": 9505
      },
      {
        "statistics": {
          "wins": 154,
          "battles": 325
        },
        "mark_of_mastery": 1,
        "tank_id": 47105
      }
    ],
    "1040836357": [
      {
        "statistics": {
          "wins": 216,
          "battles": 490
        },
        "mark_of_mastery": 1,
        "tank_id": 47105
      },
      {
        "statistics": {
          "wins": 114,
          "battles": 254
        },
        "mark_of_mastery": 2,
        "tank_id": 7969
      }
    ]
  }
}

我想得到以下 output 然后可以通過管道傳輸到@csv 和 output 到 my.csv 文件。

[
  1040918564,
  166,
  441,
  1,
  9505
]
[
  1040918564,
  154,
  325,
  1,
  47105
]
[
  1040836357,
  216,
  490,
  1,
  47105
]
[
  1040836357,
  114,
  254,
  2,
  7969
]

我的第一步是.data | to_entries[] .data | to_entries[]解析如下....

{
  "key": "1040918564",
  "value": [
    {
      "statistics": {
        "wins": 166,
        "battles": 441
      },
      "mark_of_mastery": 1,
      "tank_id": 9505
    },
    {
      "statistics": {
        "wins": 154,
        "battles": 325
      },
      "mark_of_mastery": 1,
      "tank_id": 47105
    }
  ]
*** snip ***

這就是我卡住的地方。 如何將“key”值包含到“value”數組的每個元素中,以實現我想要的 output。

如果我忽略“key”並在“value”數組上使用“to_entries”,它幾乎可以完成這項工作,但並不完全......

.data | to_entries[] | {id: .key, value} |.value | to_entries [] |.value | [.statistics.wins, .statistics.battles, .mark_of_mastery, .tank_id] .data | to_entries[] | {id: .key, value} |.value | to_entries [] |.value | [.statistics.wins, .statistics.battles, .mark_of_mastery, .tank_id]給出....

[
  166,
  441,
  1,
  9505
]
[
  154,
  325,
  1,
  47105
]
[
  216,
  490,
  1,
  47105
]
[
  114,
  254,
  2,
  7969
]

這是我所能得到的。

我已經太老了,非常感謝一些幫助。 :)

這是一個非常保守的方法:

.data
| to_entries[]
| [.key]
  + (.value[]
     | (.statistics | [.wins, .battles])
       + [.mark_of_mastery, .tank_id])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM