Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jq将数据从几个输入json对象复制到一个输出对象?_Json_Edit_Jq - Fatal编程技术网

如何使用jq将数据从几个输入json对象复制到一个输出对象?

如何使用jq将数据从几个输入json对象复制到一个输出对象?,json,edit,jq,Json,Edit,Jq,我有一个文件,其中每一行都是json对象的数组,如: [ { “ts”:“2017-06-13 16:59:35778” }, { “id”:39, “路径”:“/1497365920809-31368-6D8E756916AE1”, “消息属性”:{ “某些过时数据”:“149736597532”, “更多过时数据”:“20”, “c”:” } }, { “id”:40, “路径”:“/1497365920809-31368-6D8E756916AE1”, “消息属性”:{ “一些过时的数据”

我有一个文件,其中每一行都是json对象的数组,如:

[
{
“ts”:“2017-06-13 16:59:35778”
},
{
“id”:39,
“路径”:“/1497365920809-31368-6D8E756916AE1”,
“消息属性”:{
“某些过时数据”:“149736597532”,
“更多过时数据”:“20”,
“c”:”
}
},
{
“id”:40,
“路径”:“/1497365920809-31368-6D8E756916AE1”,
“消息属性”:{
“一些过时的数据”:“一些文本”,
“需要的数据”:“名称,1,文本,149736597568”
}
}
]
每个数组的第一个对象将始终是我需要的“时间戳”,但下面的对象可能感兴趣,也可能不感兴趣

现在我需要让jq将每一行转换为一个json对象数组,其中包含时间戳和所需的
数据,如

[
{
“ts”:“2017-06-13 16:59:35778”,
“id”:40,
“路径”:“/1497365920809-31368-6D8E756916AE1”,
“消息属性”:{
“需要的数据”:“名称,1,文本,149736597568”
}
}
]
通过做

jq'
.[]                                                 | 
选择所需的(.messageAttributes.data.=null)|
{
id:.id,
路径:。路径,
messageAttributes:{
所需数据:.messageAttributes.data所需数据
}
}

“更新中的答案很好,但这里有一个变量说明了几点,特别是不需要变量,
{x}
可以用作
{x:.x}
的缩写:

.[0] 
+ (.[]
   | select(.messageAttributes.data_that_I_Need != null)
   | {id, 
      path,
      messageAttributes: {dataThat_I_Need: .messageAttributes.data_that_I_Need}} )

感谢您格式化@Thor:-)