我在shell脚本中使用jq工具(jqjson处理器)来解析json。
我有2个json文件,希望将它们合并到一个唯一的文件中
文件内容如下:
文件1
{
"value1": 200,
"timestamp": 1382461861,
"value": {
"aaa": {
"value1": "v1",
"value2": "v2"
},
"bbb": {
"value1": "v1",
"value2": "v2"
},
"ccc": {
"value1": "v1",
"value2": "v2"
}
}
}
文件2
{
"status": 200,
"timestamp": 1382461861,
"value": {
"aaa": {
"value3": "v3",
"value4": 4
},
"bbb": {
"value3": "v3"
},
"ddd": {
"value3": "v3",
"value4": 4
}
}
}
预期结果
{
"value": {
"aaa": {
"value1": "v1",
"value2": "v2",
"value3": "v3",
"value4": 4
},
"bbb": {
"value1": "v1",
"value2": "v2",
"value3": "v3"
},
"ccc": {
"value1": "v1",
"value2": "v2"
},
"ddd": {
"value3": "v3",
"value4": 4
}
}
}
我尝试了很多组合,但我得到的唯一结果是以下结果,这不是预期的结果:
{
"ccc": {
"value2": "v2",
"value1": "v1"
},
"bbb": {
"value2": "v2",
"value1": "v1"
},
"aaa": {
"value2": "v2",
"value1": "v1"
}
}
{
"ddd": {
"value4": 4,
"value3": "v3"
},
"bbb": {
"value3": "v3"
},
"aaa": {
"value4": 4,
"value3": "v3"
}
}
使用此命令:
jq -s '.[].value' file1 file2
这是一个在任意数量的对象上递归工作的版本(使用*
):
echo '{"A": {"a": 1}}' '{"A": {"b": 2}}' '{"B": 3}' |\
jq --slurp 'reduce .[] as $item ({}; . * $item)'
{
"A": {
"a": 1,
"b": 2
},
"B": 3
}
使用jq-s add:
$ echo '{"a":"foo","b":"bar"} {"c":"baz","a":0}' | jq -s add
{
"a": 0,
"b": "bar",
"c": "baz"
}
这将所有JSON文本从标准输入读取到一个数组中(jq-s
这样做),然后它“减少”它们。
(add
定义为def add: duce.[]为$x(null;.$x);
,它遍历输入数组的/对象的值并将它们相加。对象添加==合并。)
从1.4开始,现在可以使用操作员执行此操作。当给定两个对象时,它将递归地合并它们。例如
jq -s '.[0] * .[1]' file1 file2
重要提示:请注意将文件放在同一数组中的-s(-slurp)
标志。
将为您带来:
{
"value1": 200,
"timestamp": 1382461861,
"value": {
"aaa": {
"value1": "v1",
"value2": "v2",
"value3": "v3",
"value4": 4
},
"bbb": {
"value1": "v1",
"value2": "v2",
"value3": "v3"
},
"ccc": {
"value1": "v1",
"value2": "v2"
},
"ddd": {
"value3": "v3",
"value4": 4
}
},
"status": 200
}
如果还想删除其他键(如预期结果),一种方法是:
jq -s '.[0] * .[1] | {value: .value}' file1 file2
或者可能更高效(因为它不合并任何其他值):
jq -s '.[0].value * .[1].value | {value: .}' file1 file2
问题内容: 我在外壳程序脚本中使用jq工具(jq-json-processor)来解析json。 我有2个json文件, 想将它们合并为一个唯一的文件 这里是文件的内容: 文件1 文件2 预期结果 我尝试了很多组合,但是我得到的唯一结果是以下结果,这不是预期的结果: 使用此命令: 问题答案: 从1.4开始,操作员现在可以做到这一点。当给定两个对象时,它将递归合并它们。例如, 重要:请注意该标志,它
问题内容: 让我们看一个例子。 我需要合并这两个对象数组并创建以下数组: 有没有JavaScript或jQuery函数可以做到这一点? 不适合我 它返回 问题答案: 如果要在JavaScript中合并2个对象数组。你可以使用这一招 例如 输出:
问题内容: 我有一个程序需要合并两个。哈希图的键为a ,值为。合并的特殊条件是,如果键已在字典中,则需要将其添加到现有值中而不是替换它。这是我到目前为止抛出的代码。 问题答案: 如果您的代码不能保证会在到达此方法之前将其初始化,则您将必须执行null检查,没有出路 考虑到HashMap允许将null作为值在代码中容易发生NPE的另一个位置是 如果这两个都不为空,则将获得NPE。
我想将至少2个PDF文件合并为一个,同时保留原始PDF中的所有表单元素。表单元素包括文本字段、单选按钮、复选框、下拉菜单等。请查看此示例PDF文件的表单: 你能做到吗? 编辑:至于实现,我更希望在linux平台上使用开源工具(如'ghostscript'或任何其他您认为适合解决此任务的工具)的命令行解决方案。 当然,欢迎每个人提供解决这个问题的任何工作解决方案,包括一个编码解决方案,它涉及编写一个
active=testing my.test.value=test 当前它失败了,错误:原因:java.lang.IllegalArgumentException:无法解析值“${my.test.value}”中的占位符“my.test.value”
我试图结合2个不同的Excel文件。(多亏了post导入多个excel文件到python pandas中,并将它们连接到一个dataframe中) 到目前为止,我得出的结论是: 下面是他们的样子。 null