【问题标题】:parsing a JSON file with multiple JSONs解析具有多个 JSON 的 JSON 文件
【发布时间】:2017-04-03 02:56:16
【问题描述】:

我通过并行运行多个 curl 语句(对服务的 GET 请求)创建了一个 JSON 文件作为响应。

现在,当我尝试使用 python 解析 JSON 文件时,它会失败,因为该文件附加了多个 JSON

错误:

错误:第 1 行的解析错误: ...CT_AGGREGATE"}]}]}]}{"serviceResponseTim ----------------------^ 期待 'EOF'、'}'、','、']',得到 '{'

文件中的示例:

{“服务响应时间”:510,...... .......:[{"categoryId":28162,"metricValue":97,"days":"NONE","metricMappedType":"PRODUCT_AGGREGATE"}]}]}]}{"serviceResponseTime ":387,"products":[{"productReferenceId":........

如您所见,这些是从 2 个 curl 语句获得的 2 个响应,但是当我使用 xargs 并行运行它们时,它会将输出附加到 1 行中。

现在我的问题是解析这个文件。

谁能建议一种将 curl 命令的输出放入文件中单独行的方法。

或者我认为的一种粗略方法是,如果我可以从文件开头提取部分直到“}]}]}]}{”,从当前文件中剪切并将其放入另一个文件并在其上运行 JSON 解析器该文件只有 1 个 JSON o/p。在我们从中删除每个 JSON 之后,在循环中重复此操作,直到原始文件为空。现在我的问题是我无法从行首提取到 }]}]}]}{.

此外,所有 JSON o/ps 都附加在 1 行中,并且不在单独的行中,否则我会逐行阅读。

有人可以帮忙吗?

【问题讨论】:

    标签: json parsing curl awk sed


    【解决方案1】:

    假设你有这个输入文件:

    {"name": "foo"}{"name": "bar"}
    

    您可以使用jq 命令:

    jq -s . input.file
    

    将 input.file 传输到:

    [
      {
        "name": "foo"
      },
      {
        "name": "bar"
      }
    ]
    

    希望对你有帮助

    【讨论】:

    • 我在我的 Mac 上安装了 jq 并运行命令,但它显示 -sh: jq: command not found
    猜你喜欢
    • 2012-09-09
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    相关资源
    最近更新 更多