gpt4 book ai didi

java - 将 Java POJO 转换为 PactDslJsonBody

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:49 25 4
gpt4 key购买 nike

我正在尝试编写一个帮助程序类来直接从 Java Pojo 获取 PactDslJsonBody。但是,它无法创建嵌套 Json 对象。有人可以解释一下为什么吗?下面是我的代码:

HELPER 类代码 - 用于将输入 java pojo 转换为 PactDslJsonBody

public class PactDslHelper {

private static PactDslJsonBody responseBody;

public PactDslJsonBody getResponseBody() {
return responseBody;
}


private PactDslJsonBody updateResponseBody(Class<?> clazz) {
responseBody.object("yooyoo");
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
String fieldName = field.getName();
System.out.println("fieldName is : = " + fieldName);
System.out.println("fieldType Simple Name is : = " + field.getType().getSimpleName());
switch (field.getType().getSimpleName()) {
case "Integer":
responseBody.integerType(fieldName);
break;
case "String":
responseBody.stringType(fieldName);
break;
case "UUID":
responseBody.uuid(fieldName);
break;
case "Boolean":
responseBody.booleanType(fieldName);
break;

}
}
responseBody.closeObject();
return responseBody;
}

public PactDslHelper(Class<?> clazz) {

Field[] fields = clazz.getDeclaredFields();
responseBody = new PactDslJsonBody();

for (Field field : fields) {
Class<?> fieldType = field.getType();
String fieldName = field.getName();
System.out.println("fieldName is : = " + fieldName);
System.out.println("fieldType Simple Name is : = " + field.getType().getSimpleName());
switch (field.getType().getSimpleName()) {
case "Integer":
responseBody.integerType(fieldName);
break;
case "String":
responseBody.stringMatcher(fieldName,ApplicationConstants.REGEX_UUID);
break;
case "UUID":
responseBody.uuid(fieldName);
break;
case "Boolean":
responseBody.booleanType(fieldName);
break;
default:
if (!fieldType.isPrimitive()) {
responseBody = updateResponseBody(fieldType);
}
}
}

}
<小时/>

如何使用该类的片段:

responseBody_dto = new PactDslHelper(ProductFrontEntity.class);
<小时/>

失败的测试:输入类别:

public class ProductFrontEntity {
private String storeId;
private String productId;
private String code;
private ProductIdentificationMap productIdentificationMap;
}

public class ProductIdentificationMap {
private String jAN;
}

预期结果:

{
productId:***,
code:***,
productIdentificationMap{
jan:***
}
}

实际结果:

{
productId:***,
code:***,
jan:***
}

最佳答案

难道是你自己的代码有问题?您似乎没有在对象容器对象内部打开一个新对象,而该对象最后没有正确关闭,因此一切都是平坦的。

如果您使用的是 java 8,我真的建议您使用 Lambda version of the DSL因为它更容易理解。

请尝试让此论坛保持开放状态,以解决 Pact 特定问题,而不是有关您自己的代码为何无法运行的问题。

关于java - 将 Java POJO 转换为 PactDslJsonBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48637771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com