Spring Cloud Contract无法在contract.yml中转换unicode字符串

时间:2019-02-28 13:45:38

标签: java spring spring-boot spring-cloud-contract

我要从YAML编写的合同文件中获取WireMock存根的JSON文件。
但是当Spring Cloud Contract Gradle插件包含unicode字符串(例如“日本”)时,它无法正确转换合同文件。
(我通过执行Gradle插件的“ generateClientStubs”任务来生成存根。)

具体来说,我制作了以下合同yaml文件。

name: get-all-users
request:
url: /users
method: GET
response:
status: 200
headers:
    content-type: application/json; charset=UTF-8
body:
    -
    id: 001
    name: alice
    country: US
    - 
    id: 002
    name: bob
    country: 日本

在完成generateClientStubs任务后,我得到了以下JSON文件。

{
 "id" : "b776c7d1-fd6d-454a-be92-ef02b8eec793",
 "request" : {
     "url" : "/users",
     "method" : "GET"
 },
 "response" : {
     "status" : 200,
     "body" : "[{\"id\":1,\"name\":\"alice\",\"country\":\"US\"},{\"id\":2,\"name\":\"bob\",\"country\":\"\\u65e5\\u672c\"}]",
     "headers" : {
     "content-type" : "application/json; charset=UTF-8"
     },
     "transformers" : [ "response-template" ]
 },
 "uuid" : "b776c7d1-fd6d-454a-be92-ef02b8eec793"
}

如您所见,响应正文的unicode字符串(尤其是“ country \”:\“ \ u65e5 \ u672c \”部分)未正确转换。 我想要的如下:

"body" : "[{\"id\":1,\"name\":\"alice\",\"country\":\"US\"},{\"id\":2,\"name\":\"bob\",\"country\":\"日本"}]"

我必须使用这样的日语字符串(因为我是日语...)。
我该怎么解决?

感谢您阅读。

0 个答案:

没有答案