我有一个现有的json文件需要转换,但遇到了问题.

以下是该 struct 的一个示例:


jq -r '.document.results.summary.run.[] | [.run_number, .cinfo] ' input.json

[
  "42",
  [
    {
      "name": "Joe shmo",
      "state": "AZ",
      "city": "Phoenix"
    },
    {
      "name": "Jane shmo",
      "state": "CA",
      "city": "Blythe"
  ]
]
[
  "84",
  [
    {
      "name": "Jake shmo",
      "state": "NY",
      "city": "Albany"
    },
    {
      "name": "Jay shmo",
      "state": "TN",
      "city": "Franklin"
  ]
]

I need to convert this to a CSV to look like: 
"run_number","cinfo.name","cinfo.state","cinfo.city"

Example: 
"42","Joe shmo","AZ","Phoenix"
"42","Jane shmo","CA","Blythe"
"84","Jake shmo","NY","Albany"
"84","Jay shmo","TN","Franklin"

我try 使用|@csv我得到:

jq: error (at input.json:1397): array ([{"@name":"...) is not valid in a csv row 个 我相信这是因为它是由多个索引组成的array.如何使用JQ转换输出?

推荐答案

您try 将@csv应用于包含非字符串的array.你必须对它们进行分解才能得到它们的值.

jq -r '
  .document.results.summary.run.[] | . as {$run_number}
  | .cinfo[] | [$run_number, .name, .state, .city]
  | @csv
' input.json

如果一切顺利(如果您提供了input.json个,我可以对其进行测试),这应该会产生

"42","Joe shmo","AZ","Phoenix"
"42","Jane shmo","CA","Blythe"
"84","Jake shmo","NY","Albany"
"84","Jay shmo","TN","Franklin"

Json相关问答推荐

Google Page to JSON应用程序脚本出现CORS错误

将json数组反序列化为选项 struct

如何在Haskell中解析JSON,其中字段的名称可以是多个值之一,但应该转换为单个Haskell类型?

Jolt-在数组列表中插入新的字段

从Postgres表中的JSON中提取值

Azure数据工厂-WEB活动输出赢得';t返回JSON

使用 jq 从带有转义反斜杠字符的嵌套 JSON 中提取数据

报告重复的对象键

使用 jq 将非统一的 json 输出转换为汇总表

JOLT 转换仅过滤一个字段

如何在不使用 Newtonsoft.JSON 的情况下序列化/反序列化

使用 jq 将消息转换为数组

我无法将来自 API 的数据显示到 FlatList 中,但我在 console.log 中看到了它.问题是什么?

使用 Python 3 读取 JSON 文件

在 Java 中比较两个 JSON 文件的最佳方法

在 JSON.NET 中序列化派生类时的字段顺序

IE10/11 Ajax XHR 错误 - SCRIPT7002:XMLHttpRequest:网络错误 0x2ef3

C++:使用 nlohmann json 从文件中读取 json 对象

在播放框架 JsObject 中解析 Json 数组

我如何反序列化以杰克逊为单位的时间戳?