首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓-奇怪的EscapeUtil.unescapeString崩溃

安卓-奇怪的EscapeUtil.unescapeString崩溃
EN

Stack Overflow用户
提问于 2017-03-31 22:32:29
回答 2查看 226关注 0票数 5

从我们的应用服务器接收到JSON字符串时,我会崩溃。我们相信,当一个条目有“引号”时,就会有额外的转义,补充道。

在android中,如何确定是否接收到这样的字符串,以及如何从Android端修复它?

下面是我们当前的响应字符串处理:

代码语言:javascript
复制
public String processResponseString(String responseString) {
    if (responseString.startsWith("\"")) {
        responseString = responseString.substring(1, responseString.length());
    }
    if (responseString.endsWith("\"")) {
        responseString = responseString.substring(0, responseString.length() - 1);
    }
    responseString = EscapeUtil.unescapeString(responseString);
    return responseString;
}

此外,logcat在崩溃后不包括整个json字符串,因此我无法看到导致崩溃的实际字符串。

异常

代码语言:javascript
复制
 java.lang.ClassCastException: com.optiisolutions.housekeeping.model.OptiiAPI.OptiiError cannot be cast to java.util.Map
 at com.optiisolutions.housekeeping.network.OptiiHTTPClientRetroFit$2.success(OptiiHTTPClientRetroFit.java:186)
 at retrofit.CallbackRunnable$1.run(CallbackRunnable.java:45)

OptiiHTTPClientRetroFit.java:186

代码语言:javascript
复制
optiiClient.postRequest(event.getRequest(), new Callback<Map<String, Object>>() {
    @Override
     public void success(Map<String, Object> stringObjectMap, Response response) {
         Log.d(TAG, "Successful response: " + stringObjectMap.toString());
          String result = (String) stringObjectMap.get(OPTII_RESULT_TYPE);
          String json = gson.toJson(stringObjectMap, Map.class);
EN

回答 2

Stack Overflow用户

发布于 2017-04-10 06:40:31

我认为您需要像下面的代码一样使用MapJSON解析为JSONValue。

代码语言:javascript
复制
optiiClient.postRequest(event.getRequest(), new Callback<Map<String, Object>>() {
    @Override
     public void success(Map<String, Object> stringObjectMap, Response response) {
         Log.d(TAG, "Successful response: " + stringObjectMap.toString());
        // For JsonValue you need to add one jar file .
         String json= JSONValue.toJSONString(stringObjectMap);
         Log.d(TAG, "Successful json: " + json);
}

需要在javax.json-1.0.2.jar依赖项中添加jar javax.json-1.0.2.jar

代码语言:javascript
复制
dependencies {
    compile files('libs/javax.json-1.0.2.jar')
}

从以下链接下载javax.json-1.0.2.jar

http://www.java2s.com/Code/Jar/j/Downloadjavaxjson102jar.htm

票数 3
EN

Stack Overflow用户

发布于 2017-04-09 09:58:34

我试着复制你的弦。我猜你想保留这些引号。我可以用这个简单的算法来解决它,希望它对你有用:

代码语言:javascript
复制
    public static String process(String s){
       String sep = "\\\\";
       String[] arr = s.split(sep);
       StringBuilder sb = new StringBuilder();

       for(String str : arr){
          sb.append(str);
       }

       return sb.toString();
    }  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43150610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档