【发布时间】:2020-04-17 10:31:48
【问题描述】:
我尝试将同一目录中的大量 JSON 文件转换为 NDJSON,以便将它们加载到分析工具中。
我使用 jq 以便使用以下命令将它们转换为一个文件。
for file in *; do cat $file |jq -c '.[]' >> testNDJSON.json; done
原始JSON结构如下
{"user_id":"user_id_value",
"user_properties": {
"key": "value",
"key": "value",
"key": "value"
}
}
使用我的命令将数据写入文件但格式为
user_id_value, {"key": "value", "key: "value", "key": "value"}
所以基本上用户 id 和 user_properties 都丢失了键 + 外部 JSON 括号。我不确定如何在 jq 中解决这个问题
我想要得到的是我在同一个文件中逐行拥有的相同 JSON 结构。我不明白为什么我上面的命令会从 JSON 中删除最大的键和括号。
{"user_id":"user_id_value", "user_properties": { "key": "value", "key": "value", "key": "value"} }
【问题讨论】:
-
请将该示例输入的所需输出(无描述)添加到您的问题(无评论)。
-
您的命令似乎运行良好。它正确输出:
{"user_id":"user_id_value","user_properties":{"key":"value"}} {"user_id":"user_id_value","user_properties":{"key":"value"}} {"user_id":"user_id_value","user_properties":{"key":"value"}} -
让我检查一下原始文件中是否有一些有趣的东西,因为这是我所期望的,但不是我得到的
-
使用有效的 JSON:我建议删除
-c。您的 JSON 无效,其尾随,。 -
好吧,也许我的环境中有些东西导致了这种情况。删除 -c 只是导致输出不是 NDJSON 它仍然丢弃它们的键并且输入是有效的 JSON