有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在rest服务中读取json数组或json对象?

我对下面提到的rest服务进行了XmlHttpRequest。我正在通过xhr.send()方法向rest服务发送一个对象数组

var object =[  
   {  
      "name":"John",
      "age":31,
      "city":"New York"
   },
   {  
      "name":"John",
      "age":31,
      "city":"New York"
   },
   {  
      "name":"John",
      "age":31,
      "city":"New York"
   }
];
      $scope.onSubmit = function () {
        var xhr = new XMLHttpRequest();
        var url = "http://localhost:8080/abcd/xyz/qwer";
        var params = '';
        xhr.open("POST", url , true);
        xhr.setRequestHeader("Content-type", "application/json");
        xhr.setRequestHeader("Accept","application/json");
        xhr.onreadystatechange = function () {
            if (this.readyState === 4 && this.status === 200) {

            }
        };
    xhr.send(JSON.stringify(object) );
};

当我在没有JsonObject参数的情况下ping这个rest服务时,它会到达rest服务,但是当在rest服务中保留JsonObject作为它的参数时,它会给出不支持的媒体类型415错误。在rest服务中,我试图读取通过send()方法发送的json 但这会导致一个错误

@POST
@Path("/qwer")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response Service(JsonArray object) {
    String name = object[0].name;
    String age = object[0].age;
    return Response.status(200).entity(" read data").build();

}

当我在没有JsonObject参数的情况下ping这个rest服务时,它会到达rest服务,但是当在rest服务中保留JsonObject作为它的参数时,它会给出不支持的媒体类型415错误。在rest服务中,我试图读取通过send()方法发送的json。如何在rest服务中读取JsonArray或JsonObject


共 (1) 个答案

  1. # 1 楼答案

    不要忘记定义/配置Jackson MessageConverter

    public class AppConfig extends WebMvcConfigurerAdapter {
         ...     
    
         @Override
            public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    
                converters.add(new MappingJackson2HttpMessageConverter());
                super.configureMessageConverters(converters);
            }
    }