Json

使用嵌套值將 JSON 轉換為 CSV 的問題

  • May 17, 2021

到目前為止,我過去將標準 JSON 轉換為 CSV 沒有問題jq。但是現在我的數據變得複雜了。

主要的基本標籤是accountsubaccount。所有其他值都是變數。該條目year具有可變值並經常隨時間更改。這是我無法解決的任務。

這是輸出

{
   "jsonrpc": "2.0",
   "result": {
       "current": [{
           "number": 171883808,
           "commission": 10,
           "year": [
               [1999, 9224, 0],
               [2000, 41919, 9224],
               [2001, 162945, 41919],
               [2002, 397993, 162945],
               [2003, 751570, 397993],
               [2004, 886466, 751570]
           ],
           "status": true,
           "last": 9782473,
           "account": "VFUIJOPQW",
           "subaccount": "BLPORDGS"
       }, {
           "number": 69999012,
           "commission": 15,
           "year": [
               [2012, 97587, 0],
               [2013, 472685, 97587],
               [2014, 605963, 472685],
               [2015, 698634, 605963],
               [2016, 1931094, 1745922]
           ],
           "status": true,
           "last": 9782490,
           "account": "VFUIJOXXX",
           "subaccount": "BLPORXXX"
       }],
   "id": 1
   }
}

我假設您的意思是輸出一個帶有account,subaccountyear數組的表。您可以使用更新賦值運算符 ( |=) 執行此操作,例如:

jq -r '.result | .current | .[]                 |
      .account    as $account                  |
      .subaccount as $subaccount               |
      .year[] |= ([$account, $subaccount] + .) | 
      .year[] | @tsv'

輸出:

VFUIJOPQW  BLPORDGS  1999  9224     0
VFUIJOPQW  BLPORDGS  2000  41919    9224
VFUIJOPQW  BLPORDGS  2001  162945   41919
VFUIJOPQW  BLPORDGS  2002  397993   162945
VFUIJOPQW  BLPORDGS  2003  751570   397993
VFUIJOPQW  BLPORDGS  2004  886466   751570
VFUIJOXXX  BLPORXXX  2012  97587    0
VFUIJOXXX  BLPORXXX  2013  472685   97587
VFUIJOXXX  BLPORXXX  2014  605963   472685
VFUIJOXXX  BLPORXXX  2015  698634   605963
VFUIJOXXX  BLPORXXX  2016  1931094  1745922

引用自:https://serverfault.com/questions/1063795