1

Как я могу отсортировать эти данные JSON?

Привет,

Я керлинг веб-службы, и я получаю этот вывод в виде JSON, используя curl и jq. Как я могу отсортировать список по процентам, по возрастанию или по убыванию?

{
 "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 ответ1

1

если вы хотите сохранить ту же структуру JSON и отсортировать записи (в рамках "результата"), то, очевидно, это невозможно, поскольку метка "result" с верхней меткой является объектом JSON: внутри объектов у вас нет контроля над порядок элементов JSON. это возможно только для массивов JSON (массивы можно переставлять).

Однако, если вы хотите просто сбросить отдельные записи, такие как «binance:adaeth», все они отсортированы по "процентам", это достижимо с помощью jtc (альтернативной утилите unix для jq).

предполагая, что ваш 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 $ 

PS. Вы можете найти мою утилиту jtc на github.com или просто погуглить по ключевым словам jtc и json

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .