无法检索键:值,出现错误 --> jq: 错误(<stdin>在 :0 处):无法使用字符串索引号

  • 本文关键字:错误 索引 字符串 stdin jq 检索 jq
  • 更新时间 :
  • 英文 :


无法提取键:值对,尝试索引块。

<nd.com.citrix.netscaler.json" -X GET https://abcd.com/nitro/v1/config/lbpersistentsessions?args=vserver:puppet-vip.ta10.sd | jq '[.[] ] | .[3] | [.srcip]'

出现以下错误:

jq: error (at <stdin>:0): Cannot index array with string "srcip"

我需要提取键值为srcip和destip(见下文)

<ion/vnd.com.citrix.netscaler.json" -X GET https://abcd.com/nitro/v1/config/lbpersistentsessions?args=vserver:somevip | jq '[.[] ] | .[3]' | more
[
{
"vserver": "somevip",
"type": "1",
"typestring": "SOURCEIP",
"srcip": “1.1.1.1",
"srcipv6": "::/0",
"destip": "2.2.2.2",
"destipv6": "::/0",
"flags": false,
"destport": 0,
"vservername": “somevip”,
"timeout": "0",
"referencecount": "0",
"persistenceparam": "1.1.1.1"
},

我不得不使用[。3]以原始输出为索引:

<-Type:application/vnd.com.citrix.netscaler.json" -X GET https://abcd.com/nitro/v1/config/lbpersistentsessions?args=vserver:somevip | jq '[.[] ]' | more
[
0,
"Done",
"NONE",
[
{
"vserver": "somevip",
"type": "1",
"typestring": "SOURCEIP",
"srcip": “1.1.1.1”,
"srcipv6": "::/0",
"destip": "2.2.2.2",
"destipv6": "::/0",
"flags": false,
"destport": 0,
"vservername": "somevip",
"timeout": "0",
"referencecount": "0",
"persistenceparam": "1.1.1.1"
},
{
"vserver": "somevip",
"type": "1",
"typestring": "SOURCEIP",
"srcip": "3.3.3.3”,
"srcipv6": "::/0",
"destip": "4.4.4.4”,
"destipv6": "::/0",
"flags": false,
"destport": 0,
"vservername": "somevip",
"timeout": "0",
"referencecount": "0",
"persistenceparam": "1.1.1.1"
},

同样,尝试这样做并得到错误:

<GET https://abcd.com/nitro/v1/config/lbpersistentsessions?args=vserver:somevip | jq -r '.[] | select(.vserver == "somevip") | .srcip'

jq: error (at <stdin>:0): Cannot index number with string "vserver"

修复了Q中显示的完整JSON的一些小问题后,调用:

jq '.[3][].srcip' input.json

收益率:

"1.1.1.1"
"3.3.3.3"
指出

  1. .[3][].scrip只是:.[3] | .[] | .srcip的缩写形式

  2. 在您的初始查询中,[.[]]有效地不做任何事情,因为输入是一个数组。

相关内容

最新更新