簡體   English   中英

如何在 jq 中解析/替換 json 文件中的值

[英]How to Parse / substitute value in jq for json file

如何解析/替換 jquery 中的值。

json文件如下:

{
  "09800214851900C3": {
    "label": "P7-R1-R16:S2",
    "name": "Geist Upgradable rPDU",
    "state": "normal",
    "order": 0,
    "type": "i03",
    "snmpInstance": 1,
    "lifetimeEnergy": "20155338",
    "outlet": {},
    "alarm": {
      "severity": "",
      "state": "none"
    },
    "layout": {
      "0": [
        "entity/total0",
        "entity/phase0",
        "entity/phase1",
        "entity/phase2"
      ]
    }
  }
}

我想像下面那樣做,但這不起作用。 對此的任何想法/線索將不勝感激。

a=09800214851900C3

jsonfile.json | jq '.${a}.label'

您當前的嘗試存在以下問題:

  • jsonfile.json不是命令,因此您不能將其用作命令行的第一個標記。 你可以cat jsonfile.json | jq ... cat jsonfile.json | jq ... ,但讓jq處理文件的首選方法是使用jq 'command' file

  • 您在 shell 中定義了一個變量a ,但您嘗試在單引號字符串中引用它,這會阻止 shell 將其擴展為實際值。 基於 shell 的解決方案是使用雙引號來擴展變量,但最好使用--arg varname value選項在jq本身的上下文中定義變量

  • 09800214851900C3不被jq視為“簡單的、類似標識符的鍵”(因為它以數字開頭),因此訪問與此鍵關聯的值 ( .key ) 的標准方法不起作用,您需要使用."09800214851900C3".["09800214851900C3"]代替

總之,我相信您會想要使用以下命令:

jq --arg a 09800214851900C3 '.[$a].label' jsonfile.json

暫無
暫無

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

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