jq - 使用 JQ 在元素名称中直接访问带有冒号/特殊字符的 JSON 元素
问题描述
我正在尝试遵循手册和示例,如果您想专门在 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),要么我尝试过的所有内容都没有数据“null”。
以下为 TransactionID 和 Status 输出“null”。
以前有报道称人们试图弄清楚(问题741、745建议使用上述JSON.net代码以及一些变体试图遵循指导的jq <x.json '.["key::name"]'
类似问题,但JQ 手册没有具体解决的示例这种情况也好。
以下至少不会出错,但不会输出值,只是名称中包含“:”的两个元素的“NULL”。如果我像在评论中一样添加```标记在外场我再次得到“Invalid_Character”。
elif .UpdateResponseMessage then
# ( .UpdateResponseMessage .Header | [`.["com::TransactionID"]`] )
( .UpdateResponseMessage .Header | ["Response", `.["com::TransactionID"], .["com::Status"]] )
输出:
“响应”、“空”、“空”
但我需要的是:
"响应","5e5b1750-7be7-11e8-886a-838029aca397","成功"
解决方案
推荐阅读
- linux - Linux libc++ seems to be broken
- sql-server - 在 WHERE 子句中获取今天的日期
- powershell - 带有文本“$__VAR__”的 PowerShell 转义字符串
- url - 如何使用 JasperSoft Studio 创建超链接作为静态文本的一部分?
- c++ - C++ 引用在函数范围内创建的实例
- powershell - PowerShell - 显示父对象和子对象的属性
- vue.js - 未捕获的错误:无法从“/”中找到模块“web/static/js/app”
- google-drive-api - 在 Google Colab 中安装 Google Drive 的持久授权
- javascript - Javascript:在脚本之间共享一个类对象
- python - Python:擦除数据框中> <之间的信息以外的所有字符串