如何在WireMock Handlebars中正确定义并处理静态JSON数组
解决WireMock Handlebars中JWT载荷静态JSON数组被识别为字符串的问题
你遇到的问题根源是:直接将字符串化的JSON传给jwt助手时,它会将其视为普通字符串而非JSON数组。以下是两种可行的解决方法:
方法一:使用parseJson助手解析字符串为数组
WireMock内置了parseJson Handlebars助手,能将JSON格式的字符串解析为原生JSON对象/数组。修改映射文件中的myArray参数定义即可:
{ "request": { "method": "GET", "urlPath": "/api/test" }, "response": { "status": 200, "body": "{{{jwt userId='12345' userName='testUser' myArray=(parseJson '[{\"key1\":\"value1\"}, {\"key2\":\"value2\"}]') isActive=true role='admin' }}}" } }
关键说明
(parseJson '[...]')会把传入的JSON字符串解析为原生数组,jwt助手生成载荷时会保留其数组类型。- 注意在JSON映射文件中,字符串内的双引号必须用
\转义,避免破坏JSON结构。
方法二:直接传递原生数组(适用于WireMock 2.35+)
如果使用的WireMock版本为2.35及以上,可以直接在jwt助手参数中定义数组,无需字符串化:
{ "request": { "method": "GET", "urlPath": "/api/test" }, "response": { "status": 200, "body": "{{{jwt userId='12345' userName='testUser' myArray=[{\"key1\":\"value1\"}, {\"key2\":\"value2\"}] isActive=true role='admin' }}}" } }
验证效果
修改后生成的JWT载荷会符合你的期望输出,myArray将以JSON数组形式存在,而非字符串。
内容的提问来源于stack exchange,提问作者Ahmeric
相关产品推荐
相关产品推荐

