小编opy*_*pyh的帖子

如何使用 jq 将任意嵌套 JSON 转换为 CSV – 以便可以将其转换回来?

如何使用jq将任意JSON 对象数组转换为 CSV,而该数组中的对象是嵌套的

\n

StackOverflow 有大量的问题/答案,其中引用了特定的输入或输出字段,但我希望有一个通用的解决方案

\n
    \n
  1. 包括标题行,
  2. \n
  3. 适用于任何 JSON 输入,包括嵌套数组 + 对象,
  4. \n
  5. 允许记录缺少其他记录中存在的键值
  6. \n
  7. 不硬编码任何字段名称,
  8. \n
  9. 如果需要,允许将 CSV 转换回嵌套 JSON 结构,并且
  10. \n
  11. 使用关键路径作为标头名称(请参阅以下描述)。
  12. \n
\n

点符号

\n

许多使用 JSON 的产品(如CouchDBMongoDB、 \xe2\x80\xa6 )和库(如Lodash、 \xe2\x80\xa6 )使用语法变体,允许通过将关键片段与字符,通常是一个点(\xe2\x80\x98dot 表示法\xe2\x80\x99)。

\n

像这样的关键路径的一个示例是"a.b.0.c"引用此 JSON 片段中的深度嵌套属性:

\n
{\n  "a": {\n    "b": [\n      {\n        "c": 123,\n      }\n    ]\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

警告:在大多数情况下,使用此方法是一种实用的解决方案,但这意味着必须在属性名称中禁止点字符,或者必须发明更复杂的(绝对从未使用过的属性名称)来转义属性名称中的点/访问嵌套字段。MongoDB在 v5.0 之前就禁止使用"."in 文档,一些库有字段访问的解决方法( …

csv json google-sheets mongodb jq

7
推荐指数
1
解决办法
4484
查看次数

标签 统计

csv ×1

google-sheets ×1

jq ×1

json ×1

mongodb ×1