我正在使用 WireMock 的独立版本和 Handlebars 来创建动态响应。我需要在 JWT 负载中包含一个静态 JSON 数组。但是,当我尝试在映射文件中定义数组时,它被视为字符串而不是 JSON 数组。
这是我的配置的一个简单示例:
要求:
{
"request": {
"method": "GET",
"urlPath": "/api/test"
},
"response": {
"status": 200,
"body": "{{{jwt
userId='12345'
userName='testUser'
myArray='[{\"key1\":\"value1\"}, {\"key2\":\"value2\"}]'
isActive=true
role='admin'
}}}"
}
}
预期输出:
{
"userId": "12345",
"userName": "testUser",
"myArray": [
{"key1": "value1"},
{"key2": "value2"}
],
"isActive": true,
"role": "admin"
}
数组
myArray
被视为字符串,而不是 JSON 对象数组。如何在 WireMock Handlebars 中正确定义和处理静态 JSON 数组,以将其识别为 JSON 数组,而不是字符串?
目前这是不可能的。
jwt
插件中的数组只能是Integer
、Long
或String
类型,而不是您想要实现的对象。
因为您在
myArray
的值周围有单引号,所以它被视为字符串,就像您在问题中提到的那样。 您可以传递一个数组作为值,它将被视为一个数组:
{{{jwt userId='12345' userName='testUser' myArray=(array 1 2 3) isActive=true role='admin'}}}
解码后,返回的 jwt 如下所示:
{
"userId": "12345",
"userName": "testUser",
"myArray": [
1,
2,
3
],
"isActive": true,
"role": "admin"
}
正如我上面提到的,数组中只允许使用某些类型,因此它有一点限制。