我该如何对这些 JSON 数据进行排序?

我该如何对这些 JSON 数据进行排序?

我该如何对这些 JSON 数据进行排序?

你好,

我正在对 Web 服务进行 curl 操作,并使用 curl 和 jq 以 JSON 格式获取此输出。如何按百分比、升序或降序对列表进行排序?

{
 "result": {
  "binance:adabnb": {
  "price": {
    "last": 0.00724,
    "high": 0.00749,
    "low": 0.00707,
    "change": {
      "percentage": 0,
      "absolute": 0
    }
  },
  "volume": 2706796.2,
  "volumeQuote": 19759.382062
},
"binance:adabtc": {
  "price": {
    "last": 1.213e-05,
    "high": 1.234e-05,
    "low": 1.158e-05,
    "change": {
      "percentage": 0.0341006,
      "absolute": 4e-07
    }
  },
  "volume": 121339053,
  "volumeQuote": 1450.07483142
},
"binance:adaeth": {
  "price": {
    "last": 0.00035813,
    "high": 0.00036636,
    "low": 0.00033522,
    "change": {
      "percentage": 0.059399497,
      "absolute": 2.008e-05
    }
  },
  "volume": 16676148,
  "volumeQuote": 5899.18121885
},
"binance:adatusd": {
  "price": {
    "last": 0.04367,
    "high": 0.04442,
    "low": 0.04141,
    "change": {
      "percentage": 0.022237828,
      "absolute": 0.00095
    }
  },
  "volume": 13075458.7,
  "volumeQuote": 563437.821146
},
"binance:adausdt": {
  "price": {
    "last": 0.04352,
    "high": 0.04407,
    "low": 0.04101,
    "change": {
      "percentage": 0.02859844,
      "absolute": 0.00121
    }

维萨

答案1

如果您希望保留相同的 JSON 结构并对记录进行排序(在“结果”内),那么显然是不可能的,因为顶部标签“结果”是一个 JSON 对象:在对象内,您无法控制 JSON 元素的顺序。它只能使用 JSON 数组来执行(数组可以重新洗牌)。

但是,如果您只是希望转储“binance:adaeth”等单个记录,并按“百分比”排序,那么可以使用 jtc(jq 的替代 unix 实用程序)来实现。

假设你的 json 在 file.json 中,请执行以下操作:

bash $ cat file.json | jtc -w'<percentage>l: [-3]' -r -l | sort -k10
"binance:adabnb": { "price": { "change": { "absolute": 0, "percentage": 0 }, "high": 0.00749, "last": 0.00724, "low": 0.00707 }, "volume": 2706796.2, "volumeQuote": 19759.382062 }
"binance:adatusd": { "price": { "change": { "absolute": 0.00095, "percentage": 0.022237828 }, "high": 0.04442, "last": 0.04367, "low": 0.04141 }, "volume": 13075458.7, "volumeQuote": 563437.821146 }
"binance:adabtc": { "price": { "change": { "absolute": 4e-07, "percentage": 0.0341006 }, "high": 1.234e-05, "last": 1.213e-05, "low": 1.158e-05 }, "volume": 121339053, "volumeQuote": 1450.07483142 }
"binance:adaeth": { "price": { "change": { "absolute": 2.008e-05, "percentage": 0.059399497 }, "high": 0.00036636, "last": 0.00035813, "low": 0.00033522 }, "volume": 16676148, "volumeQuote": 5899.18121885 }
bash $ 

附言:你可以在 github.com 上找到我的 jtc 实用程序,或者直接用关键词谷歌jtc搜索json

相关内容