@XmlAccessorType(XmlAccessType.FIELD)未与@XmlElement映射

时间:2017-03-20 16:33:04

标签: json xml rest xml-parsing resttemplate

POST调用使用属性变量名而不是@XmlElement(name)

DTO

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "balance",
    "companyName",
    ...

@XmlRootElement(name = "CustomerDTO", namespace = "")
public class CustomerDTO {

    @XmlElement(namespace = "", required = true)
    protected String balance;
    @XmlElement(name = "company_name", namespace = "", required = true)
    protected String companyName;

POST通话

HttpEntity<CustomerDTO> entity = new HttpEntity(customerDTO, headers);
String result = restTemplate.postForObject(URL, entity, String.class);

问题是最终的JSON被创建为companyName而不是company_name

2 个答案:

答案 0 :(得分:1)

@XmlElement更改xml请求的字段名称而不是json, 如果要为JSON重命名变量,则应使用 @JsonProperty(“Name”)

For e.g:
public class Test {
  @JsonProperty("first_name")
  public String firstName;
  @JsonProperty("last_name")
  public String lastName; 
}

o / p for json将是

"Test":{
  "first_name":"Parameter-Name",
  "last_name":"Parameter-Value"
}

答案 1 :(得分:0)

马歇尔并取消了DTO的编队:

System.setProperty("webdriver.ie.driver", "C:\\Users\\Drivers\\IEDriverServer.exe");                
WebDriver driver = new InternetExplorerDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("http://google.com");
System.out.println("Hello Google");
driver.close();