Я пытаюсь преобразовать JSON объект, полученный в виде строки из запроса POST, в HashMap. Все работает нормально, пока я не добавлю еще один json в свою базу json, как показано ниже:
{"contextUser": "user",
"contextPassword": "password",
"vault": "testVault",
"type": "A_Training",
"name": "crudTest1",
"revision": "A",
"policy": "A_Training_Policy",
"attributeList": {
"A_Skill": "JAVA",
"A_Duration": "45",
"A_CostOfTraining": "1500"
}
}
Здесь моя база json содержит еще один json внутри ключа attributeList и этот дополнительный json является тем, что создает проблему для меня. Если я пытаюсь использовать метод сообщения моего REST-сервиса, используя приведенный выше JSON, это выдает ошибку ниже:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.String
at crud.CRUDController.saveBusDetails(CRUDController.java:78) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_112]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_112]...
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_112]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_112]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
Ниже приведен соответствующий код моего метода публикации:
ObjectMapper objectMapper = new ObjectMapper();
HashMap<String, String> busObjMap = objectMapper.readValue(busData, HashMap.class);
HashMap<String, String> attributeList = objectMapper.readValue(busObjMap.get("attributeList"), HashMap.class);
Iterator it=busObjMap.entrySet().iterator();
System.out.println("Business Object values:");
while(it.hasNext()) {
Map.Entry<String, String> map= (Entry<String, String>) it.next();
System.out.println(map.getKey()+": "+map.getValue());
}
it=attributeList.entrySet().iterator();
System.out.println("Attribute values:");
while(it.hasNext()) {
Map.Entry<String, String> map= (Entry<String, String>) it.next();
System.out.println(map.getKey()+": "+map.getValue());
}
Пожалуйста дайте мне знать правильный способ справиться с такой ситуацией. Я новичок в весне.