2015-09-30 3 views
0

Когда я попытался получить значение из моего json-объекта в моей стороне Java-службы, я получаю некоторые исключения во время выполнения, PLease находит исключение, которое я получаю ниже:
Когда я пытался получить значение из моего объекта JSON в моем Java WebService стороны я получаю некоторые исключения времени выполнения, Пожалуйста, найти свой объект JSon ниже:Исключение при попытке получить значение из json-объекта в java webservice

{"data":[{"userid":657,"name":"Eliina","username":"Admin","aim_name":" Eliina ","aim_title":"Administrator","password":"eli456456","role":1,"rolename":"Client Ain","clientno":"540","id":8,"client_name":"Eliina","defaulturl":"clientsettings.htm","attempts":0,"aimaccess":1}]} 

пожалуйста найти метод Java я написал:

public void insertList(String ip, JSONObject loginresult) 
{ 
    try{ 
     String n = loginresult.getString("data"); 
    } catch(JSONException je) { 
     je.printStackTrace(); 
    } 
} 

Вы можете найти исключение я получаю ниже:

30-Sep-2015 10:27:11.007 INFO [http-nio-8084-exec-10] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor /home/ty02/.netbeans/8.0.2/apache-tomcat-8.0.15.0_base/conf/Catalina/localhost/MobileService.xml has finished in 2,217 ms 
org.codehaus.jettison.json.JSONException: JSONObject["username"] not found. 
    at org.codehaus.jettison.json.JSONObject.get(JSONObject.java:360) 
    at org.codehaus.jettison.json.JSONObject.getString(JSONObject.java:487) 
    at com.zimmer.mobileservice.resources.Login.insertauditList(Login.java:84) 
    at com.zimmer.mobileservice.resources.Login.checkLogin(Login.java:71) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) 
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) 
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
+0

Пожалуйста, предоставьте код 'insertauditList', в котором исходит. – Jens

+0

Ошибка не в вышеупомянутом java-методе ... это где-то где вы запрашиваете имя пользователя, и вы не получаете его ... –

+0

Я думаю, что ваш журнал был другим. Я помню, вчера вы столкнулись с тем же вопросом, пытаясь получить «имя пользователя» из jsonObject. – pikrut

ответ

0

Вашего вклад JSON является,

{"data":[{"userid":657,"name":"Eliina","username":"Admin","aim_name":" Eliina ","aim_title":"Administrator","password":"eli456456","role":1,"rolename":"Client Ain","clientno":"540","id":8,"client_name":"Eliina","defaulturl":"clientsettings.htm","attempts":0,"aimaccess":1}]} 

Так что означает для ключа data, значения является JSONArray, но вы пытаетесь получить JSONArray as String так вы сталкиваются с таким исключением. Что вам нужно сделать, это, необходимо, чтобы получить значение как JSONArray как,

JSONArray value = loginresult.getJSONArray("data"); 

Отредактировано Ответ:

Теперь значение JSONArray содержит массив объектов, из которых вы можете получить за key, как,

JSONArray value = loginresult.getJSONArray("data"); 
String userId = ((JSONObject) value.get(0)).getString("userid"); 

Лучше проверить hasKey check и array size check, чтобы избежать неприятных исключений.

+0

Спасибо, что, если мне нужно получить идентификатор пользователя? – user1734253

+0

String user_id = loginresult.getJSONArray ("data"). GetJSONObject (0) .getString ("userid"); – pikrut

+0

Если вы прочитали stacktrace, вы увидите, что это исключение не из этого кода: 'JSONObject [" username "] не найден.' 'At com.zimmer.mobileservice.resources.Login.insertauditList (Login.java:84) ' – Jens

0

Объект «data», который вы пытаетесь получить, представляет собой массив в json. вы получите значение, как показано ниже.

jsonObject.getJSONArray("data") 
+0

Если вы прочитали stacktrace, вы увидите, что это исключение не из этого кода: 'JSONObject [" username "] не найден.' 'At com.zimmer.mobileservice.resources.Login.insertauditList (Login.java:84) ' – Jens

+0

Да, журналы разные. – pikrut

0

Это может быть наиболее обобщенный способ сделать,

ObjectMapper mapper = new ObjectMapper(); 
user = mapper.readValue(loginresult.toString(), User.class); 

пользователь является класс POJO, который имеет все поля геттер сеттер, которые есть в вашем входе.

Смежные вопросы