我无法将google-api-services-admin-directory Organization转换为JSONArray,因为会引发以下异常:


  异常消息:字符38缺少值


我有以下代码:

Get user = directoryService.users().get("[email protected]");

User domainUserObj = user.execute();

logger.warning("Organizations "+domainUserObj.getOrganizations());

JSONArray userOrgJsonArr = new JSONArray(domainUserObj.getOrganizations().toString());

logger.warning("Organizations-JsonArr "+userOrgJsonArr);


我从API这样获得数据


  组织[{title = Dev,primary = true,customType =,department = R&D,
  description = Permanant,costCenter = Cost Test 12}]


我使用的JAR版本是google-api-services-admin-directory-directory_v1-rev72-1.22.0.jar

完整的异常堆栈跟踪

2018年7月26日7:57:52 com.company.project.ApiTestServelet doGet
警告:组织[{title = Dev,primary = true,customType =,department = R&D,description = Permanant,costCenter = Cost Test 12}]


  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler
  警告:异常消息:字符38缺少值2018年7月26日晚上7:57:52 com.company.project.utility.ErrorHandler errorHandler
  警告:类ApiTestServelet中的错误2018年7月26日7:57:52 PM
  com.company.project.utility.ErrorHandler errorHandler警告:
  org.json.JSONTokener.syntaxError(JSONTokener.java:410)2018年7月26日
  下午7:57:52 com.company.project.utility.ErrorHandler errorHandler
  警告:org.json.JSONTokener.nextValue(JSONTokener.java:369)7月
  26,2018 7:57:52 PM com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.json.JSONObject。(JSONObject.java:205)2018年7月26日7:57:52
  PM com.company.project.utility.ErrorHandler errorHandler警告:
  org.json.JSONTokener.nextValue(JSONTokener.java:344)2018年7月26日
  下午7:57:52 com.company.project.utility.ErrorHandler errorHandler
  警告:org.json.JSONArray。(JSONArray.java:125)2018年7月26日
  下午7:57:52 com.company.project.utility.ErrorHandler errorHandler
  警告:org.json.JSONArray。(JSONArray.java:157)2018年7月26日
  下午7:57:52 com.company.project.utility.ErrorHandler errorHandler
  警告:
  com.company.project.ApiTestServelet.doGet(ApiTestServelet.java:122)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  javax.servlet.http.HttpServlet.service(HttpServlet.java:617)7月26日,
  2018 7:57:52 PM com.company.project.utility.ErrorHandler errorHandler
  警告:
  javax.servlet.http.HttpServlet.service(HttpServlet.java:717)7月26日,
  2018 7:57:52 PM com.company.project.utility.ErrorHandler errorHandler
  警告:
  org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1166)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.company.project.filter.XSSFilter.doFilter(XSSFilter.java:69)7月
  26,2018 7:57:52 PM com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:72)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:134)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:48)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.tools.development.DevAppServerRequestLogFilter.doFilter(DevAppServerRequestLogFilter.java:44)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1157)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:95)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  com.google.appengine.tools.development.JettyContainerService $ ApiProxyHandler.handle(JettyContainerService.java:508)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.Server.handle(Server.java:326)2018年7月26日7:57:52
  PM com.company.project.utility.ErrorHandler errorHandler警告:
  org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:923)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)7月26日,
  2018 7:57:52 PM com.company.project.utility.ErrorHandler errorHandler
  警告:
  org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)7月
  26,2018 7:57:52 PM com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)7月
  26,2018 7:57:52 PM com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
  2018年7月26日7:57:52 com.company.project.utility.ErrorHandler
  errorHandler警告:
  org.mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool.java:582)

最佳答案

我找到了一个解决方案,即使用com.google.api.client.util.ArrayMap迭代数据。

但是我不明白为什么customType从API变成空的。

ArrayList orgArrList = (java.util.ArrayList)domainUserObj.getOrganizations();

for(int i = 0 ; i < orgArrList.size(); i++) {
    System.out.println("For getOrganizations ::"+orgArrList.get(i));
    ArrayMap<String,String> orgMapArr = (ArrayMap<String, String>)
                                         orgArrList.get(i);
    System.out.println("ArrayMap-UserOrganization ::"+orgMapArr);
    for(int index=0; index < orgMapArr.size();index++) {
    try {
        System.out.println(orgMapArr.getKey(index) + " "
                                   + orgMapArr.getValue(index));
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}


输出:


  对于getOrganizations ::: {title = Dev,primary = true,customType =,
   部门=研发,描述=永久,costCenter =成本测试12}
  
  ArrayMap-UserOrganization :: {title = Dev,primary = true,customType =,
   部门=研发,描述=永久,costCenter =成本测试12}
  
  title Dev java.lang.Boolean不能强制转换为java.lang.String
   customType部门研发说明永久成本中心成本测试
   12

10-06 10:14