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"); 

谁能告诉我,什么问题呢?我在邮递员尝试相同,它的作品。我得到一个错误“无法识别的属性‘电话’

+0

苦苦追随你能分享一些细节,以便它很容易理解你正在面对的是什么 – Coder

在你的情况的电话和传真不应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也可以工作,但是有一个数据验证错误实际上没有通过测试。 –