所以我有一个看起来像这样的json对象:
File fi = new File("/webapp/src/main/webapp/resources/pics/default.jpg");
byte[] fileContent = Files.readAllBytes(fi.toPath());
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
return new ResponseEntity<byte[]>(fileContent, headers, HttpStatus.OK);
然后我可以将以下jq规则[{
"size": "77824",
"module": "rfcomm",
"depcount": "4",
"deps": []
}, {
"size": "98304",
"module": "scsi_transport_iscsi",
"depcount": "4",
"deps": []
}, {
"size": "16384",
"module": "xt_conntrack",
"depcount": "1",
"deps": ["nouveau", "i915"]
}]
用于一系列看起来像这样的对象
.[] | { (.module) : (.deps | join(",")) }
我已经添加了jq play example的内容。
我希望它获得将这些对象组合在一起的输出。像这样:
{
"rfcomm": ""
}
{
"scsi_transport_iscsi": ""
}
{
"xt_conntrack": "nouveau,i915"
}
我是个jq新手,所以我确定有一种方法,我只是不知道该怎么做。
答案 0 :(得分:0)
一种可能性:
[.[] | { (.module) : (.deps | join(",")) }] | add
答案 1 :(得分:0)
另一种可能性(某种功能性方法):
reduce .[] as $elem ({}; . + { ($elem.module): $elem.deps | join(",") })
一般语法为:
reduce inputs as $elem (INIT; REDUCER)
INIT
的输出变量初始值可以是[]
或{}
REDUCER
上执行的. +
代码确保将其附加到中间结果(输出)上