Java 基于Jersey Moxy的rest服务不使用嵌套的json post请求负载

Java 基于Jersey Moxy的rest服务不使用嵌套的json post请求负载,java,json,rest,moxy,Java,Json,Rest,Moxy,我有json数据{“first_name”:“Michael”,“last_name”:“Jordan”,“address_loc”:{“city_name”:“Mumbai”,“street”:“galino1”}的蛇形表示。我希望通过基于jersey+moxy的post方法资源以pojo表示的形式使用这些数据。请提出建议。请注意,json的普通驼峰大小写表示法使用以下代码段工作,但我需要使用snake大小写 @XmlRootElement public class Person { pr

我有json数据{“first_name”:“Michael”,“last_name”:“Jordan”,“address_loc”:{“city_name”:“Mumbai”,“street”:“galino1”}的蛇形表示。我希望通过基于jersey+moxy的post方法资源以pojo表示的形式使用这些数据。请提出建议。请注意,json的普通驼峰大小写表示法使用以下代码段工作,但我需要使用snake大小写

@XmlRootElement 
public class Person {

private String firstName;
private String lastName;

private AddressLoc addressLoc = new AddressLoc();

public Person(){};

public Address getAddressLoc() {
    return addressLoc ;
}
public void setAddressLoc(Address address) {
    this.addressLoc = address;
}

public String getFirstName() {
    return firstName;
}
public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}
public void setLastName(String lastName) {
    this.lastName = lastName;
}

}
子类/嵌套类

public class AddressLoc {

private String cityName;
private String street;

public AddressLoc(){};

public String getCityName() {
    return cityName;
}
public void setCityName(String city) {
    this.city = city;
}
public String getStreet() {
    return street;
}
public void setStreet(String street) {
    this.street = street;
}

}
资源类

   import javax.ws.rs.Consumes;
   import javax.ws.rs.POST;
   import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
   import javax.ws.rs.core.MediaType;
   import com.nabisoft.tutorials.jerseymoxy.model.Person;

@Path("/person")
public class PersonResource {

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.TEXT_PLAIN})
@Path("/post")
public String postPerson(Person pers) throws Exception{

    System.out.println("First Name = "+pers.getFirstName());
    System.out.println("Last Name  = "+pers.getLastName());
    System.out.println("Last Name  = "+pers.getAddress().getCity());
    System.out.println("Last Name  = "+pers.getAddress().getStreet());

    return "ok";
}
}
客户端代码

<script src="<%=request.getContextPath() %>/js/jquery-1.11.2.min.js"></script>
    <script>
        var ctxPath = "<%=request.getContextPath() %>";
        $(function(){                
            $("#postPerson, #postMessage").on("click", function(){
                $.ajax({
                    url: $(this).attr("id") === "postMessage" ? ctxPath+"/service/message/post" : ctxPath+"/service/personwa/post",
                    type: "POST",
                    data: '{"first_name":"Michael", "last_name":"Jordan", "address_loc":{"city_name":"Mumbai", "street":"galino1"}}',
                    contentType: "application/json",
                    cache: false,
                    dataType: "json"
                });
            });                
        });
    </script>

var ctxPath=“”;
$(函数(){
$(“#postPerson,#postMessage”)。在(“单击”,函数(){
$.ajax({
url:$(this.attr(“id”)==“postMessage”?ctxPath+“/service/message/post”:ctxPath+“/service/personwa/post”,
类型:“POST”,
数据:“{”姓“:”迈克尔“,”姓“:”约旦“,”地址“:{”城市名“:”孟买“,”街道“:”加利诺1“}}”,
contentType:“应用程序/json”,
cache:false,
数据类型:“json”
});
});                
});

除了上面列出的代码库之外,我还有“ApplicationConfig.java”和“JsonMoxyConfigurationContextResolver.java”,其中没有任何奇特的实现。谢谢。

您想添加javax.xml.bind.annotation.xmlement注释并提供另一个(蛇形)名称


问题是什么?
@XmlRootElement
public class Person {

   @XmlElement(name="first_name")
   private String firstName;