如何用Karate工具解析嵌套JSON中的merchant_id等字段
问题分析
- 核心问题:
jsonObject.body是JSON格式的字符串,不是可直接访问的JSON对象,所以无法通过.语法读取result或其下的属性。 - 额外问题:字符串内的
result值使用了单引号('merchant_id'),不符合标准JSON的双引号要求,直接解析会失败。
解决方法
先将字符串中的单引号替换为双引号修正格式,再用Karate的karate.fromJson()方法把字符串解析成JSON对象,之后就能正常访问属性了。
示例代码:
def jsonObject = { "statusCode": 200, "isBase64Encoded": false, "headers": { "Content-Type": "application/json" }, "body": "{\"result\": \"{'merchant_id': 609125186933, 'charge_month_duration': ['201801', '201801']}\"}" } // 替换单引号为双引号,修正JSON格式 def correctedBodyStr = jsonObject.body.replaceAll("'", "\"") // 解析字符串为JSON对象 def parsedBody = karate.fromJson(correctedBodyStr) // 正常访问目标属性 print parsedBody.result.merchant_id print parsedBody.result.charge_month_duration
补充说明
如果后端返回的body字符串本身是标准JSON(全双引号),可以跳过替换步骤,直接用karate.fromJson(jsonObject.body)解析。
内容的提问来源于stack exchange,提问作者Swasthik Rai
相关产品推荐
相关产品推荐

