【问题标题】:JQ - pick up another higher level key value after array printJQ - 在数组打印后获取另一个更高级别的键值
【发布时间】:2020-05-09 23:34:49
【问题描述】:

我有这个 JSON 数据:

price_history.json

{
  "candles": [
    {
      "open": 26,
      "high": 26.25,
      "low": 25.75,
      "close": 26.0625,
      "volume": 1038600,
      "datetime": 957762000000
    },
    {
      "open": 25.8125,
      "high": 26.25,
      "low": 25.75,
      "close": 26,
      "volume": 765900,
      "datetime": 957848400000
    }
  ],
  "symbol": "ABC",
  "empty": false
}

我需要将其转换为 CSV。我可以使用以下过滤器获得几乎所有我需要的东西,但我想添加数组外部的符号:

cat price_history.json | jq '.candles[] | (.open|tostring) + "," + (.high|tostring)  + "," + (.low|tostring)  + "," + (.close|tostring)  + "," + (.volume|tostring)  + "," + (.datetime|tostring)' 

回复:

"26,26.25,25.75,26.0625,1038600,957762000000"
"25.8125,26.25,25.75,26,765900,957848400000"

期望的响应:

"26,26.25,25.75,26.0625,1038600,957762000000,ABC"
"25.8125,26.25,25.75,26,765900,957848400000,ABC"

我尝试了许多组合,试图回到顶层拾取符号,包括尝试先拾取它。我不在乎它排在哪里

这是我得到的最接近的,除了打印钥匙和我不需要的所有东西之外,它什么都有:

cat /home/utility/scripts/marketScan/app/modules/api-comm/tdam/port/input/price_history-2.txt | jq '(.candles[]|tostring) + "," + (.symbol|tostring)'

回复

"{\"open\":26,\"high\":26.25,\"low\":25.75,\"close\":26.0625,\"volume\":1038600,\"datetime\":957762000000},ABC"
""{\"open\":25.8125,\"high\":26.25,\"low\":25.75,\"close\":26,\"volume\":765900,\"datetime\":957848400000},ABC"

【问题讨论】:

    标签: json export-to-csv jq


    【解决方案1】:

    如果您真的想要有效的 CSV,通常最好将 @csv 与 -r 命令行选项结合使用。 在您的情况下,您可以选择:

    .symbol as $symbol
    | .candles[]
    | [.open, .high, .low, .close, .volume, .datetime, $symbol]
    | @csv
    

    或等效但没有 $-变量:

    (.candles[] | [.open, .high, .low, .close, .volume, .datetime]) + [.symbol]
    | @csv
    

    如果你愿意冒险,你也可以考虑:

    .symbol as $symbol
    | .candles[]
    | [.[], $symbol]
    | @csv
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 2022-11-11
      • 2021-10-20
      • 1970-01-01
      • 2014-05-24
      相关资源
      最近更新 更多