解析Json数组以获取值

时间:2019-07-09 09:23:51

标签: json parsing jenkins jq

我有一个嵌套的JSON文件:

cat *.json | jq '.ContainerVersions[length + 1].ContainerVersions[-length]'

我想从文件中获取容器版本的最新版本。我用的是jq:

import numpy as np

def triangle_kernel(kerlen):
    r = np.arange(kerlen)
    kernel1d = (kerlen + 1 - np.abs(r - r[::-1])) / 2
    kernel2d = np.outer(kernel1d, kernel1d)
    kernel2d /= kernel2d.sum()
    return kernel2d

print(triangle_kernel(4))
# [[0.02777778 0.05555556 0.05555556 0.02777778]
#  [0.05555556 0.11111111 0.11111111 0.05555556]
#  [0.05555556 0.11111111 0.11111111 0.05555556]
#  [0.02777778 0.05555556 0.05555556 0.02777778]]
print(triangle_kernel(5))
# [[0.01234568 0.02469136 0.03703704 0.02469136 0.01234568]
#  [0.02469136 0.04938272 0.07407407 0.04938272 0.02469136]
#  [0.03703704 0.07407407 0.11111111 0.07407407 0.03703704]
#  [0.02469136 0.04938272 0.07407407 0.04938272 0.02469136]
#  [0.01234568 0.02469136 0.03703704 0.02469136 0.01234568]]

但是无法从jenkins使用它,因此需要其他解决方案。

2 个答案:

答案 0 :(得分:0)

假设您要获取SupportedVersions数组的最后一项及其ContainerVersions数组的最后一项,只需使用负索引即可。负索引将相对于数组的结束而不是开始进行索引。

.SupportedVersions[-1].ContainerVersions[-1]

答案 1 :(得分:0)

或者,可以使用基于步行路径的实用程序 jtc

bash $ <container.json jtc -w'<ContainerVersions>l:[-1:]'
"0.0.77"
"0.0.79"
bash $ 

PS>披露:我是jtc-用于JSON操作的shell cli工具的创建者