解析错误:第 1 行第 9 列的数字文字无效

J. *_*ser 2 json jq

我知道 jq 搜索需要被阻止{}并且密钥需要被包裹起来",例如:

{
  "id": 36815684
}
Run Code Online (Sandbox Code Playgroud)

但如果我有这样的事情:

X-RateLimit-Reset: 1452786798
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

解析错误:第 1 行第 9 列的数字文字无效

我需要回退还sed/awk/perl ..是有更优雅的使用 jq 的方式?

pea*_*eak 5

除了根本不使用 jq 之外,您还有两个主要选择:

(1) 预处理非 JSON 使其成为 JSON

(2) 使用 -R 命令行选项,例如

echo "X-RateLimit-Reset: 1452786798" | jq -R 'split(":")'

[
  "X-RateLimit-Reset",
  " 1452786798"
]
Run Code Online (Sandbox Code Playgroud)

因此,如果您知道该值将是数字:

echo "X-RateLimit-Reset: 1452786798" |
  jq -Rc 'split(":") | {(.[0]) : (.[1]|tonumber)}'
{"X-RateLimit-Reset":1452786798}
Run Code Online (Sandbox Code Playgroud)

请注意,尽管 jq 中的 "j" 用于 JSON,但 jq(带有 -R 选项)对于文本处理也很好。