【发布时间】:2017-08-15 17:41:25
【问题描述】:
我一直在使用 jq 从 curl 响应中解析 JSON,这非常酷。
我现在要做的是获取我在 CSV 中拼凑在一起的各种信息,并将其转换为 JSON,以便我可以将其转换为 API。这是我尝试以编程方式复制的示例 JSON:
{
"title": "New Story",
"channels": [
{
"id": "65tyc2TLUZsO"
}
],
"description": "Story Description Here",
"new_files": [
{
"filename": "419155345a7b449df3baca76694b64efbec9bcf3983b51e02f92e7ef29fc26ee.pptx",
"description": "File Description ABC"
},
{
"filename": "5cdd90989c03d3fb619df6f9294b1fcb537b4f3b55737465930b220507f30e75.pdf",
"description":"File Description XYZ"
}
]
}
标题、id、描述、文件名和(文件)描述值都在 CSV 中。我想不通的是如何从我所拥有的中生成 JSON。
鉴于以下情况,我不知道应该如何格式化我的 CSV 文件:
1. 我在顶层有一些键:值对(标题、描述),然后还有一些带有键:值对的数组。我可以告诉你,“通道”数组中总是有 1 个值。
2. 我不会在 new_files 数组中拥有相同数量的文件,因此能够动态构建该数组会很棒。
如果有人有关于这种事情的教程可以指点我,那就太棒了。我敢肯定我不是第一个尝试这个的人。我正在为这些东西使用 bash 脚本(据我所知),但我并不反对其他解决方案。 (我只是需要更长的时间来学习。)
在高层次上,我了解我想要做什么以及从哪里提取信息,我应该在哪里拥有哪些变量等等,我只是在实施细节方面遇到了一些问题。
【问题讨论】:
-
首先,请放心,jq 对于您所描述的任务来说是一个很棒的工具。其次,您表示您在格式化 CSV 文件方面具有一定的灵活性,这使得您很难确定您遇到的问题。我建议您描述一种您想到的特定格式,以便我们有一些开始。第三,您可能需要咨询 jq github.com/stedolan/jq/wiki/FAQ 和 github.com/stedolan/jq/wiki/Cookbook 以获取 CSV 到 JSON 的示例。
-
这是一个 csv 格式的示例:标题、频道、描述、文件名、文件描述新故事、65tyc2TLUZsO、这里的故事描述、419155345a7b449df3baca76694b64efbec9bcf3983b51e02f92e7ef29fc26ee.pptx、文件描述 ABC 新故事、 5cdd90989c03d3fb619df6f9294b1fcb537b4f3b55737465930b220507f30e75.pdf,文件说明 XYZ 这里我每个文件有 1 行。但是,我如何区分这些文件进入一个数组,我只有 1 个“标题”值,通道是一个数组,但只有 1 个 key:value。