前言:
????????es6常用方法來解決功能需求。
1、出現復雜的json字符串如何去解析?
比如:下面這個字符串,如果用json.parse解析發現還是個字符串
"\"[{\\\"orgId\\\":\\\"1054021138280960\\\",\\\"orgName\\\":\\\"Engineering Department\\\"},{\\\"orgId\\\":\\\"1054021253648896\\\",\\\"orgName\\\":\\\"Project Team A\\\"}]\"";
解決方法
? ? ? ? 思路就是通過多級解析來解決問題,如果還是json字符串就在解析,如果不是就證明我們解析成功了。
封裝方法:
parseMultiEscapedJSON(str) {try {// 可能需要多次解析直到得到最終對象let result = str;while (typeof result === 'string') {result = JSON.parse(result);}return result;} catch (e) {console.error('解析失敗:', e);return null;}}
還有其它封裝方法:
function safelyParseJSON(str) {try {// 嘗試直接解析return JSON.parse(str);} catch (e) {try {// 如果失敗,嘗試去除可能的多余轉義let cleanedStr = str;// 處理多層轉義情況while (cleanedStr.includes('\\"') && cleanedStr.startsWith('"') && cleanedStr.endsWith('"')) {cleanedStr = cleanedStr.slice(1, -1).replace(/\\"/g, '"');}return JSON.parse(cleanedStr);} catch (e2) {console.error("無法解析JSON字符串:", e2);return null;}}
}// 使用示例
const result = safelyParseJSON(escapedString);
console.log(result);
2、根據多個參數,動態&拼接字段
我們實際使用中,需要循環對象的場景挺多的,二期還可以配合map啊等方法滿足我們的需要
比如:`/dataPermission/queryWorkflowInfo?workFlowId=${params.workFlowId}&tenantId=${params.tenantId} `? 我們拼接一個這樣的字符串,可以通過方法讓循環params來實現動態拼接
方法1:
const queryString = Object.keys(params).map(key => `${key}=${params[key]}`).join('&');const result = `/dataPermission/queryWorkflowInfo?${queryString}`;
方法2:
const result = `/dataPermission/queryWorkflowInfo?${Object.keys(params).map(key => `${key}=${params[key]}`).join('&')}`;