ショック!JSON文字列の解析に2時間かかりました
2702 ワード
解決すべき問題
需要
フロントエンドは
解決手順フロントエンドアクセス 解析により に転送する.は、 に送信する. に戻る.
解決手順 に変換することができる. に送信することができる.ドッキングに問題が発生しました.
問題の具体化と解決策
使用するツール
エラーメッセージ:
この
結果:
長い間コードを調整しました
2時間後にこのソリューションが登場しました.
需要
フロントエンドは
/first/path/parm?parm1=parm1&parm2=parm2
にアクセスし、バックグラウンドは結果をクエリーし、String
文字列を返します.しかし、ポイントが来て、/first/path/parm
はデータベースを照会することができなくて、要求を/second/path/parm
に送って照会して、結果を得てやっとブラウザに捨てることができます.解決手順
/first/path/parm?parm1=parm1&parm2=parm2
parm1
およびparm2
が得られ、/second/path/parm?parm1=parm1&parm2=parm2
SearchResultModel
をString
に変換する/first/path/parm
/first/path/parm
結果をJSON
に変換する処理後、文字列に変換してフロントエンド解決手順
/first/path/parm
が作成すると、パラメータが得られ、/second/path/parm
に送信され、文字列をオブジェクトに解析し、オブジェクトを文字列/second/path/parm
が作成すると、クエリ結果を文字列に変換し、/first/path/parm
/first/path/parm
は/second/path/parm
で生成されたJSON
文字列を解析できません.問題の具体化と解決策
使用するツール
JSON
解析ライブラリ:
com.alibaba
fastjson
1.2.7
/second/path/parm
は結果コードを返します.SearchResultResponse res = elasticSearchDao.searchByContent(content, isvId, pageId, size, status);
response = JSON.toJSONString(res);
return response;
response
の内容は以下の通りです.{"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":[]}
長い間コードを調整しました
2時間後にこのソリューションが登場しました.
result = result.substring(1, result.length()-1).replaceAll("\\\\", "");