[英]Invalid numeric literal with jq
我有大量來自第 3 方系統的 JSON,我想用 jq 對其進行預處理,但是我在編寫查詢時遇到了困難,測試用例如下:
$ cat test.json
{
"a": "b",
"c": "d",
"e": {
"1": {
"f": "g",
"h": "i"
}
}
}
$ cat test.json|jq .e.1.f
jq: error: Invalid numeric literal at EOF at line 1, column 3 (while parsing '.1.') at <top-level>, line 1:
.e.1.f
我如何在這里得到“g”作為我的輸出? 或者如何將 1 轉換為“1”以便正確處理?
來自jq手冊 :
您還可以使用如下語法查找對象的字段。[“foo”](上面的.foo是此的簡寫版本,但僅適用於類似標識符的字符串)。
如果您想要原始輸出,還需要引號並使用-r
:
jq -r '.e["1"].f' test.json
我編寫了一個調用 curl 命令的 shell 腳本函數,並將其通過管道傳輸到 jq 命令中。
function getName {
curl http://localhost:123/getname/$1 | jq;
}
export -f getName
當我從 CLI 運行這個時,
getName jarvis
我得到了這樣的回應:
解析錯誤:第 1 行第 72 列的數字文字無效
我嘗試刪除 | jq 從 curl 命令,我得到了沒有 jq 解析的結果:
<Map><timestamp>1234567890</timestamp><status>404</status><error>Not Found</error><message>....
我首先認為我在 curl 命令中有一個錯誤的字符,或者我使用了函數 param $1 錯誤。
然后我計算了結果字符串中的字符數,我注意到該字符串中的第 72 個字符是“未找到”之間的空格。
潛在的問題是我的 spring REST 控制器中還沒有名為 getname 的方法,因此響應返回 404 Not Found。 但此外,除了輸出錯誤消息外,jq 沒有處理響應中的空白空間。
我是 jq 的新手,所以也許有辦法解決空白空間問題,但那是另一天。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.