震驚!解析JSON字符串用了兩個小時

需要解決的問題

需求

前端訪問/first/path/parm?parm1=parm1&parm2=parm2,后臺查詢結果,返回String字符串。
但是,重點來了,/first/path/parm并不能查詢數(shù)據(jù)庫,需要把請求發(fā)送給/second/path/parm查詢,得到結果才能再丟給瀏覽器。

解決步驟

  • 前端訪問/first/path/parm?parm1=parm1&parm2=parm2
  • 解析得到parm1parm2,轉(zhuǎn)發(fā)到/second/path/parm?parm1=parm1&parm2=parm2
  • SearchResultModel轉(zhuǎn)成String發(fā)送給/first/path/parm
  • /first/path/parm將結果轉(zhuǎn)換為JSON處理之后,再轉(zhuǎn)換成字符串返回給前端

解決步驟

  • /first/path/parm寫好了,可以得到參數(shù),并發(fā)送給/second/path/parm,可以將字符串解析成對象,再將對象轉(zhuǎn)換為字符串
  • /second/path/parm寫好了,可以將查詢結果轉(zhuǎn)換為字符串,并發(fā)送給/first/path/parm
  • 對接出現(xiàn)問題了,/first/path/parm居然不能解析/second/path/parm生成的JSON字符串。

問題具體化及解決方案

用到的工具

JSON解析庫:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.7</version>
</dependency>

/second/path/parm返回結果代碼:

SearchResultResponse res = elasticSearchDao.searchByContent(content, isvId, pageId, size, status);
response = JSON.toJSONString(res);
return response;

response內(nèi)容如下:

{"results"["24400576","25235505","58394962","26742017","25789087","26938194","19395051","76716273","20142157","29667266"],"total":103}

/first/path/parm解析該字符串的代碼:

String result = searchService.search(isvid, key, curPage, pageSize, status);
JSONObject map = JSON.parseObject(result);//這句總是報錯

報錯信息:

java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject

查看content

"{\"total\":0,\"results\":[]}"

將此content單獨運行是正確的:

public class Hello {
    public static void main(String[] args) {
        String s = "{\"total\":0,\"results\":[]}";
        JSONObject json = JSON.parseObject(s);
        System.out.println(JSON.toJSONString(json));
    }
}

結果:

{"total":0,"results":[]}

接著調(diào)了很長時間代碼...

兩個小時之后出現(xiàn)了這個解決方案:

result = result.substring(1, result.length()-1).replaceAll("\\\\", "");
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容