使用JQ直接访问元素名称中带有冒号/特殊字符的JSON元素

时间:2018-08-09 07:13:40

标签: jq

我正在尝试按照手册和示例进行操作,如果您想在不输出整个结构的情况下专门在JQ输出中使用冒号元素名称,则它尚不清楚。

Raw:{"UpdateResponseMessage":{"Header":{"com:TransactionID":"5e5b1750-7be7-11e8-886a-838029aca397","com:TimeStamp":"2018-06-29T21:57:08.549Z","com:SourceSystem":"Call","com:Status":"Success"}},"level":"info","message":"UpdateResponseMessage being sent.","timestamp":"2018-06-29T21:57:08.549Z"}

jq-win64 [.] test.log的输出如下:

 [  {
"UpdateResponseMessage": {
  "Header": {
    "com:TransactionID": "5e5b1750-7be7-11e8-886a-838029aca397",
    "com:TimeStamp": "2018-06-29T21:57:08.549Z",
    "com:SourceSystem": "Call",
    "com:Status": "Success"
  }
},

]

我试图仅调用“ com:Status”和“ com:TransactionID”,但是它给了我一个语法错误(INVALID_CHARACTER),或者在我尝试过的所有操作中都没有数据“空”。

以下输出的TransactionID和Status为“ null”。

以前有报道称人们试图弄清(问题741745,并建议使用jq <x.json '.["key::name"]'和与上述{{3 }}以及一些变体都尝试遵循该指南,但是questions也没有专门针对这种情况的示例。

以下内容至少不会出错,但不会输出值,名称中包含“:”的两个元素只是“ NULL”。如果我添加```在注释掉的字段中,我再次得到“ Invalid_Character”。

             elif .UpdateResponseMessage then 
            # ( .UpdateResponseMessage .Header | [`.["com::TransactionID"]`] ) 
             ( .UpdateResponseMessage .Header | ["Response", `.["com::TransactionID"], .["com::Status"]] ) 

输出:

“响应”,“空”,“空”

但是我需要的是:

“响应”,“ 5e5b1750-7be7-11e8-886a-838029aca397”,“成功”

0 个答案:

没有答案