【发布时间】:2021-09-30 23:55:20
【问题描述】:
我有一个包含多个字符串的字符串对象。我想提取 "_json": 之后的部分,直到它到达 } 但是当我在我的代码中给出这个时,它告诉 index out of bound 异常。 任何人都可以帮助提取那部分 我得到的字符串是
===Username===>>{"profile":{"id":"xxxxxx","name":{},"_raw":"{\"sub\":\"xxxxx\",\"country\":\"US\",\"firstname\":\"xxxx\",\"employeetype\":\"XXXX\",\"mail\":\"abc@yz.com\",\"gehrbusinesssegment\":\"avav\",\"gessobusinessunit\":\"AVI DT-xxxxx Engineering\",\"gessouid\":\"C2B0A5EB-8A20-170F-BF3E-002128B20D70\",\"cn\":\"Saha, Romit\",\"title\":\"Project Manager (Backend)\",\"georaclehrid\":\"xxxxx\",\"lastname\":\"Saha\",\"uid\":\"xxxxx\",\"groupNAME\":[\"@GE AWS_bu-readonly_175070699551\",\"@GE AWS_bu-readonly_639624358806\",\"@AVIATION MRO Fulfillment Operations Advisor\",\"@POWER pge_role_super_user_dev\",\"@AVIATION DISE Friends of the Family\",\"@AVIATION MOA Users - Editor Access\",\"@AVIATION MOA-Viewer-Users\",\"@Gas Power Smartshop Users\",\"@AVIATION US VPN GROUP\",\"@Digital Emergency Change Notification 23\"],\"gessocompanyname\":\"XXXXXX\",\"gehrindustrygroup\":\"XXXXXX\",\"gessojobfunction\":\"Information Technology\",\"street\":\"XXXXXPlaza\",\"location\":\"XXXX\",\"state\":\"XXX\",\"geECIndicator\":\"N\"}\r\n","_json":{"sub":"XXXX","country":"US","firstname":"Romit","employeetype":"XXX","mail":"XXX@ge.com","gehrbusinesssegment":"XXX","gessobusinessunit":"AVI DT-Data Infrastructure & Software Engineering","gessouid":"C2B0A5EB-8A20-170F-BF3E-002128B20D70","cn":"Saha, Romit","title":"XXXXXX(Backend)","georaclehrid":"XXXX","lastname":"Saha","uid":"502622018","groupNAME":["@GE AWS_bu-readonly_175070699551","@GE AWS_bu-readonly_639624358806","@AVIATION MRO Fulfillment Operations Advisor","@POWER pge_role_super_user_dev","@AVIATION DISE Friends of the Family","@AVIATION MOA Users - Editor Access","@AVIATION MOA-Viewer-Users","@Gas Power Smartshop Users","@AVIATION US VPN GROUP","@Digital Emergency Change Notification 23"],"gessocompanyname":"XXXXX","gehrindustrygroup":"GE Aviation","gessojobfunction":"Information Technology","street":"XXXXX Plaza","location":"XXXX","state":"XXX","geECIndicator":"N"}},"accessTokenExp":1627090679000,"accessToken":"XXXXX","refreshTokenExp":1627105079000,"refreshToken":"XXXXX","user_info":{"family_name":"Saha","given_name":"Romit","user_name":"XXXXX"}}
但是当我在我的代码中给出这个时,它给出了异常
String json = username.substring(username.indexOf("_json") + 1, username.indexOf('}'));
错误:
2021-07-23 20:37:42 [http-nio-9090-exec-1] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet].log - Servlet.service() for servlet [dispatcherServlet] in context with path [/moa/api/v1] threw exception
java.lang.StringIndexOutOfBoundsException: String index out of range: -1137
at java.lang.String.substring(String.java:1967) ~[na:1.8.0_251]
at com.ge.digital.oa.common.config.cloud.oidc.OIDCRequestFilter.doFilterInternal(OIDCRequestFilter.java:80) ~[main/:na]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) ~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.17.jar:9.0.17]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.17.jar:9.0.17]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
【问题讨论】:
-
使用 JSON 解析器。