【问题标题】:parse error: Invalid numeric literal at line 1, column 9解析错误:第 1 行第 9 列的数字文字无效
【发布时间】:2017-08-27 07:43:25
【问题描述】:

我了解jq搜索需要被{}屏蔽,key需要用"包裹,例如:

{
  "id": 36815684
}

但如果我有这样的事情:

X-RateLimit-Reset: 1452786798

我收到此错误:

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

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

【问题讨论】:

  • 那不是 JSON……看起来像一个 http 标头……jq 用于处理 JSON。
  • 你能提供一个示例输入和预期输出吗?我不确定你想要达到什么目的。

标签: json jq


【解决方案1】:

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

(1) 对非 JSON 进行预处理以使其成为 JSON

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

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

[
  "X-RateLimit-Reset",
  " 1452786798"
]

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

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

请注意,虽然 jq 中的“j”用于 JSON,但 jq(带有 -R 选项)对于文本处理来说很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多