RestAssured,无法在io.RestAssured中传递嵌套json的POJO对象
问题描述:
这是我想要发布的Jsonbody,并且我为子节点(例如Phone,Fax)和Info(父节点)创建了POJO。我无法获取子节点元素,信息元素工作得很好。RestAssured,无法在io.RestAssured中传递嵌套json的POJO对象
info
{
"Name": "Auto Test",
"addressLine1": "4399 Apple ln",
"city": "BlahWonders",
"state": "GA",
"zipCode": "30555",
"phone": {
"countryCode": "1",
"areaCode": "678",
"dialNumber": "3196864"
},
"fax": {
"countryCode": "1",
"nationalPrefix": "1",
"areaCode": "333",
"dialNumber": "3333333"
},
}
我为各类信息,电话,传真创建了POJO类。 我为每个设置每个类中的值创建了一个新对象。 ofcourse我的信息类有以下几点:
private String name;
private String addressLine1;
private String city;
private String state;
private String zipCode;
private HashMap<String,Phone> phone;
private HashMap<String,Fax> fax;
Info info = new Info();
Phone phone = new Phone();
phone.setAreaCode("333");
phone.setCountryCode("");
phone.setDialNumber("666666");
Fax fax = new Fax();
fax.setAreaCode("555");
fax.setCountryCode("usa");
fax.setDialNumber("9999999");
HashMap<String,Fax> faxMap= new HashMap<String,Fax>();
faxMap.put("fax",fax);
HashMap<String,Phone> phoneMap= new HashMap<String,Phone>();
phoneMap.put("phone",phone);
info.setFax(faxMap);
info.setPhone(phoneMap);
.
.
.
.
RestAssured验证为岗位:我得到400
given().contentType("application/json").body(info).when().post("/info/add");
谁能告诉我,什么问题呢?我在邮递员尝试相同,它的作品。我得到一个错误“无法识别的属性‘电话’
答
在你的情况的电话和传真不应HashMap的只是平面的物体下面的例子将提供所需的输出。
@Data //using lombok annotation to reduce code amount
@AllArgsConstructor
public class Phone {
private String countryCode;
private String areaCode;
private String dialNumber;
}
@Data
public class Fax {
@AllArgsConstructor
private String countryCode;
private String nationalPrefix;
private String areaCode;
private String dialNumber;
}
@Data
@AllArgsConstructor
public class Info {
private String name;
private String addressLine1;
private String city;
private String state;
private String zipCode;
private Phone phone;
private Fax fax;
}
public void test() {
...
given()
.when()
.contentType(ContentType.JSON)
.body(new Info("Auto Test", "4399 Apple ln", "BlahWonders", GA", "30555",
new Phone("1", "678", "3196864"),
new Fax("1", "1", "333", "3333333")))
...
}
但在以下情况下:
@Data
@AllArgsConstructor
public class Info {
private String name;
private String addressLine1;
private String city;
private String state;
private String zipCode;
private Map<String, Phone> phones;
private Map<String, Fax> faxes;
}
你会得到:
{
"name": "Auto Test",
"addressLine1": "4399 Apple ln",
"city": "BlahWonders",
"state": "GA",
"zipCode": "30555",
"phones": {
"phone": {
"countryCode": "1",
"areaCode": "678",
"dialNumber": "3196864"
}
},
"faxes": {
"fax": {
"countryCode": "1",
"nationalPrefix": "1",
"areaCode": "333",
"dialNumber": "3333333"
}
}
}
+0
感谢RocketRaccoon,我把它传真到另一个pojo,即使hashmap也可以工作,但是有一个数据验证错误实际上没有通过测试。 –
苦苦追随你能分享一些细节,以便它很容易理解你正在面对的是什么 – Coder