json - 如何在不使用波浪号的情况下仅获取 JSON 密钥?
问题描述
我试图(通过 JSON 路径)仅从下面的 JSON 中获取键值,但没有成功。
我不能使用波浪号 (~),因为 JMeter 的JSON 路径提取器在 JSON PATH 4.0 下工作并且 ~ 无法识别。
{
"facetCount": {
"designer": {
"4856430": 2,
"7313551": 14,
"7018102": 8,
"306838": 1,
"85146": 146,
"2654979": 11,
"221111": 4,
"180510": 40,
"3344622": 59,
"472718": 73,
"107993": 19,
"166170": 58,
"6908": 2,
"426629": 1,
"1358858": 9,
"9879178": 6,
"55006": 43,
"285396": 2,
"3355": 9,
"215501": 8,
"4968477": 4,
"11349629": 7,
"11229643": 27,
"11355128": 9,
"7093068": 3,
"11098281": 2,
"5833751": 1,
"4741301": 1,
"9198104": 21,
"991324": 4
},
"attributes": {
"135979:77": 290,
"135979:83": 27,
"136227:20": 141,
"136227:78": 670,
"135985:44": 123,
"135985:43": 669,
"135979:62": 700,
"135979:61": 1188,
"136644:176": 2,
"136331:7": 1,
"136331:8": 3,
"136641:190": 13,
"136641:191": 12,
"136061:144": 3
},
"category": {
"136103": 208,
"136105": 147,
"137322": 2,
"136389": 120,
"136215": 236,
"136214": 954,
"136216": 217,
"136217": 352,
"136218": 452,
"136219": 40,
"136480": 4,
"136220": 111,
"136221": 288,
"136222": 58,
"136223": 369,
"136224": 163,
"136986": 3,
"136307": 1125,
"136059": 10,
"136308": 956,
"136315": 984,
"136003": 574,
"136045": 267,
"136035": 1501,
"135985": 1380,
"137134": 27,
"136309": 60,
"137323": 9,
"136390": 1,
"136021": 16,
"136322": 1951,
"137166": 16,
"137317": 7,
"136005": 4,
"135983": 4019,
"136033": 1513,
"136310": 1224,
"136392": 18,
"135981": 2430,
"136031": 16,
"136326": 1312,
"136061": 79
},
"colour": {
"1": 41686,
"7": 14593,
"5": 9596,
"18": 1,
"13": 5185,
"6": 5259,
"3": 6391,
"11": 5715,
"12": 1537,
"4": 8767,
"16": 1466,
"9": 8590,
"15": 1730,
"8": 8333,
"14": 3208,
"2": 13269,
"10": 2730
},
"ninetyminutes": {
"3": 309
},
"sameday": {
"3": 1714,
"42": 254
},
"size": {
"135972:1620": 523,
"136657:2650": 1,
"136657:2850": 1
},
"location": {
"3": 2674,
"4": 7671,
"5": 35808,
"6": 2761,
"7": 11948
},
"labels": {
"1300": 2969
}
}
}
我想获取facetCount元素下的键(设计器、属性、颜色等)以及(另一个 JSON 路径表达式)获取这些键内的键,例如来自设计师的4856430,来自属性的135979:77, 等等。
请问你能帮帮我吗?
提前致谢!
解决方案
JMeter 的 JSON 测试元素依赖于Jayway Jsonpath,它没有这个波浪号运算符来查询键,你必须去:
添加 JSR223 PostProcessor 作为返回上述 JSON 的请求的子级,并使用以下代码:
对于直接键(设计器、属性等)
def counter = 1 new groovy.json.JsonSlurper().parse(prev.getResponseData()).facetCount.each { facet -> vars.put('key_' + counter, facet.key) counter++ } vars.put('key_matchNr', counter - 1 as String)
对于子键(4856430、135979:77 等)
def counter = 1 new groovy.json.JsonSlurper().parse(prev.getResponseData()).facetCount.each { child -> child.value.keySet().each { key -> vars.put('childKey_' + counter, key) counter++ } } vars.put('childKey_matchNr', counter -1 as String)
更多信息:Groovy - 解析和生成 JSON
推荐阅读
- android - 在类型比较期间出现 assertEquals 问题
- javascript - 每行上的数据表获取按钮
- apache-spark - 如何打乱 PySpark DataFrame 的每一列中的数据?
- python - Python Pandas:根据小时和日期绘制值
- angular - Spring boot Restful API + Oauth2 + Angular - 如果用户在一段时间内不活动,则注销
- javascript - 为什么总是只画第一张桌子?
- javascript - bootstrap-datepicker 错误:datepicker 不是函数
- flutter - Flutter _如何修复此键盘的显示错误
- c# - 在 Android 移动平台上使用 Playerprefs 实现统一
- r - 使用来自 dplyr 的样本创建一组数据帧