将目录中的所有JSON文件合并为一个文件-Windows
我对JSON还相当陌生,目前我有一个约130个JSON文件的列表,这些文件是我通过下载Facebook消息数据收到的。我目前正试图使用JQ将它们连接到一个json文件中,同时保持现有的消息顺序不变,但是当我尝试在Windows上输入命令时遇到了错误。我试图在常见问题解答中遵循他们对Windows的建议,但仍然遇到问题 所有文件都有相同的布局将目录中的所有JSON文件合并为一个文件-Windows,json,windows,jq,Json,Windows,Jq,我对JSON还相当陌生,目前我有一个约130个JSON文件的列表,这些文件是我通过下载Facebook消息数据收到的。我目前正试图使用JQ将它们连接到一个json文件中,同时保持现有的消息顺序不变,但是当我尝试在Windows上输入命令时遇到了错误。我试图在常见问题解答中遵循他们对Windows的建议,但仍然遇到问题 所有文件都有相同的布局 { "participants": [ { "name": "Participant One" }, {
{
"participants": [
{
"name": "Participant One"
},
{
"name": "Participant Two"
}
],
"messages": [
{
"sender_name": "Participant One",
"timestamp_ms": 99999999999,
"content": "message content",
"type": "Generic"
},
{
"sender_name": "Participant Two",
"timestamp_ms": 9999999999,
"content": "message content",
"type": "Generic"
}
],
"title": "chat title",
"is_still_participant": true,
"thread_type": "Regular",
"thread_path": "thread path"
}
如果可能的话,使用JQ,我只想将“消息”合并到一个JSON文件中,同时保持它们的现有顺序。这些消息是这些文件中唯一我关心的数据
--编辑--
非常抱歉,原始帖子中缺少详细信息。我尝试了在此处和其他地方找到的几个命令:
jq -s "[.[][]]" a-*.json > output.json
jq -s "{ attributes: map(.attributes[0]) }" file*.json > output.json
jq -s "*" *.json > output.json
我还尝试将此代码放入一个文本文件中,并使用以下方式运行它:
jq-f文件名
但我也收到了错误
我遇到的错误有:
jq: error: Could not open file *.json: Invalid argument
或
其中,参与者2表示我对消息的响应,其他参与者是我正在与之对话的人(这在Facebook的原始JSON输出中是这样的)您可以从以下命令行调用开始:
jq -n "[inputs | .messages] | add" *.json
这有许多假设。如果windows shell不支持通配符扩展,请参阅和/或
其他假设是您使用的是JQ1.5或更高版本,当然,当前目录中的所有*.json文件都是相关的,并且*.json按所需顺序列出它们
如果JSON文件的顺序最好通过显式列出它们来确定,那么您可能需要创建一个批处理文件。如果它们的排序是由它们的内容决定的,那么您可以使用jq为您排序,但具体操作方式将取决于有关排序标准的详细信息。请尽可能遵循指南。如果不知道所需的组合是什么样子,就很难提供具体的建议。出于好奇,这些数据是动态的还是只需要提前组合文件?我也有类似的需求,只是使用powershell创建JSON文件供以后使用。我们不是代码编写服务。我们很乐意提供帮助,但您没有包括在Windows中尝试输入命令时所做的操作,也没有包括收到的错误消息。如果你不告诉我们你在做什么,我们如何帮助你找出它们为什么不起作用?在我最初的回复中添加了更多细节,我对在这个网站上发布我自己的问题很陌生,所以我很抱歉在我最初的帖子中缺少细节。@CodeWasted此数据不会是动态的,我需要提前将其组合起来,以便将其转换为我正在进行的机器学习项目的数据源。我的命令行指向包含所有JSON文件的目录,但我遇到了以下错误:“jq:error:无法打开文件*.JSON:无效参数”我以前在尝试几个命令时收到了这个错误。我在Windows上安装了Ubuntu,所以我可以访问linux shell,这个响应非常有效。我使用了“jq-n”[inputs |.messages]| add'*.json>output.json”,它将所有消息编译成一个新文件。谢谢你的帮助。
"messages": [
{
"sender_name": "Participant One",
"timestamp_ms": 99999999999,
"content": "message content",
"type": "Generic"
},
{
"sender_name": "Participant Two",
"timestamp_ms": 9999999999,
"content": "message content",
"type": "Generic"
},
{
"sender_name": "Participant Three",
"timestamp_ms": 9999999999,
"content": "message content",
"type": "Generic"
},
{
"sender_name": "Participant Two",
"timestamp_ms": 9999999999,
"content": "message content",
"type": "Generic"
}
]
jq -n "[inputs | .messages] | add" *.json