Привести элемент объекта в массив int [] java spring - PullRequest
0 голосов
/ 17 октября 2018

Добрый день.

Мне нужно выполнить приведение значения "idOffices" объекта, который я отправляю в веб-службу, но я получаю следующую ошибку

java.lang.ClassCastException: java.util.ArrayList cannot be cast to [I
at controlador.controlador.arrancarOficinas(controlador.java:70) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_181]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:888) ~[spring-webmvc-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:664) ~[tomcat-embed-core-8.5.32.jar:8.5.32]

Myисходный код в Spring boot

@RequestMapping(value = "/arrancarOficinas", method = RequestMethod.PUT)
public Map<Object, Object> arrancarOficinas(@RequestBody Map<String, Object> data) {
    HashMap<Object, Object> datares = new HashMap<>();
    int[] oficinas = (int[])data.get("idOficinas");
    System.out.println(oficinas);
    //datares = (HashMap<Object, Object>) servicios.arrancarOficinas(Integer.parseInt(data.get("idCoordinador").toString()), (int[]) data.get("idOficinas"),data.get("usuario").toString(),data.get("ip").toString());
    return datares;
}

Мой объект JSON:

   {
    "idCoordinador": 1,
    "idOficinas": [4580,4243],
    "ip": "xx.xx.x.xx",
    "usuario": "IBMUSER"
   }

Я не понимаю, почему возникает ошибка, если я отправляю массив и в зависимости от того, что вижу, онтакже возвращает массив.

Спасибо

1 Ответ

0 голосов
/ 17 октября 2018

Похоже, что JSON "idOficinas": [4580,4243] преобразуется в List из Integers.Однако вы пытаетесь привести это значение к String[]int[].Эти два типа несовместимы.Следовательно, вы получите ClassCastException.

. Вы сможете решить свою проблему, выполнив что-то вроде:

List<Integer> oficinas = (List<Integer>)data.get("idOficinas")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...