【问题标题】:JQ can't parse \u2022 characterJQ 无法解析 \u2022 字符
【发布时间】:2019-04-20 12:14:14
【问题描述】:

我正在尝试批量上传到 Elasticsearch(大约 100 万份文档)。为此,我使用 jq 重新格式化从 MySQL 数据库中提取的 JSON 文件并使用 curl 将数据发布到 Elasticsearch:

cat dataset.json | jq -r -c '.[] | { "index" : { } }, .' | curl -u login:password -H "Content-Type: application/json" -XPOST "https://.../skills/default/_bulk?pretty" --data-binary @-

我收到一个错误:

解析错误:无效字符串:从 U+0000 到 U+001F 的控制字符必须在第 276249 行第 317 列进行转义

发现jq解析不了的字符是\u2022。我尝试添加“-r”jq 命令,但仍然出现错误。对于所有出现的 \u2022,我该如何处理?

【问题讨论】:

标签: json unicode jq


【解决方案1】:

这里验证\u2022在Mac环境中被各种版本的jq正确处理:

$ echo '"\u2022"' | jq-1.4 .
"•"
$ echo '"•"' | jq-1.6 .
"•"
$ echo '"•"' | jq-1.5 .
"•"
$ echo '"•"' | jq-1.4 .
"•"
$ 

也许问题与自 jq 1.5 发布以来已修复的错误有关(参见例如 https://github.com/stedolan/jq/issues/1311)。

如果您在使用 jq 1.6 版(当前版本)时遇到问题,请提供minimal complete verifiable example 提供有关计算环境的更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2018-06-13
    • 2020-05-01
    • 2023-03-31
    相关资源
    最近更新 更多