我试图从JSON输出中获取一个值列表。
我的代码:
def VALUES_BEFORE = sh """
curl -X POST "http://node-01.xyz.com:32010/abc/def" \\
-H "accept: application/json" \\
-H "Content-Type: application/json" \\
-d '{ "cell_ids": [${payload}] }' | json_pp
"""
def json = readJSON text: VALUES_BEFORE
def mylist = json .value
echo "Values are ${mylist}"
输出为JSON以下:
[
{
"def" : "bins",
"value" : 294
},
{
"def" : "valid_bins",
"value" : 294
},
{
"def" : "covered_bins",
"value" : 1
},
{
"def" : "sum",
"value" : 415
},
{
"def" : "histro",
"value" : "-130.0 -> -120.0: 129 | -120.0 -> -110.0: 82 | -110.0 -> -100.0: 20 | -100.0 -> -90.0: 1 | -90.0 -> -80.0: 0 | -80.0 -> -70.0: 0 | -70.0 -> -60.0: 0 | -60.0 -> -50.0: 0"
}
]
预期结果:
"value" : "-130.0 -> -120.0: 129 | -120.0 -> -110.0: 82 | -110.0 -> -100.0: 20 | -100.0 -> -90.0: 1 | -90.0 -> -80.0: 0 | -80.0 -> -70.0: 0 | -70.0 -> -60.0: 0 | -60.0 -> -50.0: 0"
你的帮助会很有帮助。谢谢
3条答案
按热度按时间dnph8jn41#
由于JSON和/或Map被重构为具有相同键的Map列表,因此需要遍历整个列表并检查每个元素的map中的键的值:
以问题所举的例子来说,
myResult
的值为:如果数据结构是以
def
值作为键、以value
值作为值的键-值对的单级Map,那么会更简单。如果可能的话,值得考虑相应地改组应对机构。ilmyapht2#
这里有一些更简单的方法前面的答案:
变式1
变式2
这会将json输出转换为一个map,其中
def
为键,value
为值。然后直接使用map访问任何条目。1sbrub3j3#
本质上是一个简单的一行程序,使用
findResult
: