JMeter:如何部分验证JSON响应中指定条目(排除rateObject)
实现指定JSON对象的字段验证
我来帮你梳理下如何完成这个JSON字段验证的需求,思路很清晰,分两步走就行:
第一步:筛选出需要验证的目标条目
首先得从content数组里挑出符合条件的对象——也就是city为Berlin或者Essen的条目(对应id为1、2、4)。这里我用JavaScript和Python分别给你写个示例,你可以选自己熟悉的语言:
JavaScript示例
// 假设这是你的原始JSON数据 const responseData = { "content": [ { "id":1, "userId":2, "storeId":8, "userFirstName":"Max", "userLastName":"Mustermann", "city":"Berlin", "spendQuantity":100, "paymentStatus":"UNPAID", "userBalanceStatus":null, "rateObject": { "identifier":23, "id":"432", "rate":"1.9345345", "symbol":"USD", "rank":2 } }, { "id":2, "userId":2, "storeId":3, "userFirstName":"Newman", "userLastName":"Mustermann", "city":"Berlin", "spendQuantity":1000, "paymentStatus":"UNPAID", "userBalanceStatus":null, "rateObject": { "identifier":3, "id":"234", "rate":"1.922222245345", "symbol":"USD", "rank":2 } }, { "id":3, "userId":2, "storeId":3, "userFirstName":"Newman", "userLastName":"Mustermann", "city":"Munich", "spendQuantity":3000, "paymentStatus":"UNPAID", "userBalanceStatus":null, "rateObject": { "identifier":2332, "id":"234", "rate":"3.234234", "symbol":"USD", "rank":2 } }, { "id":4, "userId":2, "storeId":3, "userFirstName":"Newman", "userLastName":"Mustermann", "city":"Essen", "spendQuantity":4000, "paymentStatus":"UNPAID", "userBalanceStatus":null, "rateObject": { "identifier":234, "id":"234", "rate":"333.234234", "symbol":"USD", "rank":2 } } ]}; // 筛选出city为Berlin或Essen的条目 const targetItems = responseData.content.filter(item => item.city === "Berlin" || item.city === "Essen" );
Python示例
import json # 原始JSON字符串 json_content = '''{ "content": [ { "id":1, "userId":2, "storeId":8, "userFirstName":"Max", "userLastName":"Mustermann", "city":"Berlin", "spendQuantity":100, "paymentStatus":"UNPAID", "userBalanceStatus":null, "rateObject": { "identifier":23, "id":"432", "rate":"1.9345345", "symbol":"USD", "rank":2 } }, { "id":2, "userId":2, "storeId":3, "userFirstName":"Newman", "userLastName":"Mustermann", "city":"Berlin", "spendQuantity":1000, "paymentStatus":"UNPAID", "userBalanceStatus":null, "rateObject": { "identifier":3, "id":"234", "rate":"1.922222245345", "symbol":"USD", "rank":2 } }, { "id":3, "userId":2, "storeId":3, "userFirstName":"Newman", "userLastName":"Mustermann", "city":"Munich", "spendQuantity":3000, "paymentStatus":"UNPAID", "userBalanceStatus":null, "rateObject": { "identifier":2332, "id":"234", "rate":"3.234234", "symbol":"USD", "rank":2 } }, { "id":4, "userId":2, "storeId":3, "userFirstName":"Newman", "userLastName":"Mustermann", "city":"Essen", "spendQuantity":4000, "paymentStatus":"UNPAID", "userBalanceStatus":null, "rateObject": { "identifier":234, "id":"234", "rate":"333.234234", "symbol":"USD", "rank":2 } } ]}''' # 解析JSON response_data = json.loads(json_content) # 筛选目标条目 target_items = [item for item in response_data['content'] if item['city'] in ('Berlin', 'Essen')]
第二步:验证目标条目的字段(排除rateObject)
接下来就是验证这些筛选出来的条目里,除了rateObject之外的所有字段是否符合要求。我们可以先列出需要验证的字段列表,然后逐个检查字段是否存在、类型是否正确、值是否符合预期:
JavaScript验证函数示例
// 定义需要验证的字段(排除rateObject) const requiredFields = ["id", "userId", "storeId", "userFirstName", "userLastName", "city", "spendQuantity", "paymentStatus", "userBalanceStatus"]; function validateItem(item) { for (const field of requiredFields) { // 检查字段是否存在 if (!(field in item)) { console.log(`条目id ${item.id} 缺少字段:${field}`); return false; } // 按需添加字段验证规则,比如: if (field === "id" && typeof item.id !== "number") { console.log(`条目id ${item.id} 的id字段类型错误,应为数字`); return false; } if (field === "paymentStatus" && item.paymentStatus !== "UNPAID") { console.log(`条目id ${item.id} 的paymentStatus值错误,应为UNPAID`); return false; } // 其他字段的验证规则可以根据需求补充 } return true; } // 批量验证所有目标条目 const validationResults = targetItems.map(item => ({ itemId: item.id, isValid: validateItem(item) })); console.log("验证结果:", validationResults);
Python验证函数示例
# 定义需要验证的字段(排除rateObject) required_fields = ['id', 'userId', 'storeId', 'userFirstName', 'userLastName', 'city', 'spendQuantity', 'paymentStatus', 'userBalanceStatus'] def validate_item(item): for field in required_fields: # 检查字段是否存在 if field not in item: print(f"条目id {item['id']} 缺少字段:{field}") return False # 按需添加字段验证规则,比如: if field == 'id' and not isinstance(item[field], int): print(f"条目id {item['id']} 的id字段类型错误,应为整数") return False if field == 'paymentStatus' and item[field] != 'UNPAID': print(f"条目id {item['id']} 的paymentStatus值错误,应为UNPAID") return False # 其他字段的验证规则可按需补充 return True # 批量验证目标条目 validation_results = [{'item_id': item['id'], 'is_valid': validate_item(item)} for item in target_items] print("验证结果:", validation_results)
核心逻辑总结
不管用哪种语言,核心都是这两步:
- 先通过筛选条件(城市为Berlin/Essen)锁定需要验证的条目
- 再针对这些条目,验证除rateObject外的所有指定字段的存在性、类型或值是否符合预期
你可以根据自己的实际需求,调整字段的验证规则,比如添加对spendQuantity的范围检查,或者userFirstName的非空验证等等。
内容的提问来源于stack exchange,提问作者Nelly
相关产品推荐
相关产品推荐

