我具有以下JSON格式
{
"file": {
"version": "v1.4",
"release": "1.1"
},
"status": "ON",
"document": {
"status": "NOT_FOUND",
"release": "undefined"
}
}
我想知道如何将格式添加到我的PactDslJsonBody中,诸如此类?
DslPart result = new PactDslJsonBody()
.stringType("file.version", "v1.4")
.stringType("file.release", "1.1")
.stringType("status", "ON")
.stringType("document.status", "NOT_FOUND")
.stringType("document.release", "release")
.asBody();
或者可以添加Java Pojo吗?我有类ApplicationResponse:
public class ApplicationResponse {
private File file;
private String status;
private Document document;
//...
}
Something like ??
DslPart result = new PactDslJsonBody()
.object(ApplicationResponse)
.asBody();
什么是最好的方法?你能举个例子吗?
答案 0 :(得分:1)
我们尝试使用反射来解决我们的pojos,以做您想做的事情。但是,我们的类带有许多Lombok批注,并且我们无法从生成器批注的字段中获取默认值。我们放弃了尝试使用它。但是毫无疑问,有更多时间的开发人员可以实现这一目标。
我现在正在为我们的项目积极创建契约,并同时使用LambdaDsl
和PactDslJsonBody
来建立互动。
DslPart actualPactDsl = LambdaDsl.newJsonBody((body) -> {
body
.stringType("status", "ON")
.object("document", (doc) -> {
doc.stringType("status", "NOT_FOUND");
doc.stringType("release", "undefined");
})
.object("file", (file) -> {
file.stringType("version", "v1.4");
file.stringType("release", "1.1");
});
}).build();
或
String pactDslJson = new PactDslJsonBody()
.stringType("status", "ON")
.object("document")
.stringType("status", "NOT_FOUND")
.stringType("release", "undefined")
.closeObject()
.object("file")
.stringType("version", "v1.4")
.stringType("release", "1.1")
.closeObject()
.getBody().toString();
这两个示例都将从您的示例中产生Json字符串。