// 模拟 PlatformLogger.SystemInfo 方法,实际使用时需要替换为真实实现 const PlatformLogger = { SystemInfo: (message: string) => { console.log(message); } }; /** * 将json串转换成Dictionary对象 * @param jsonString * @returns */ export function ParseJson2Dictionary(jsonString: string): { [key: string]: any } { const json = JSON.parse(jsonString); return ParseJObject2Dictionary(json); } /** * 将json串转换成Dictionary对象,深度为1 * @param jsonString * @returns */ export function ParseJson2StringDictionary(jsonString: string): { [key: string]: string } { const json = JSON.parse(jsonString); const dict = ParseJObject2Dictionary(json, true); const result: { [key: string]: string } = {}; for (const key in dict) { if (dict.hasOwnProperty(key)) { result[key] = String(dict[key]); } } return result; } /** * 将json串转换成List对象 * @param jsonString * @returns */ export function ParseJson2List(jsonString: string): any[] { const json = JSON.parse(jsonString); if (!Array.isArray(json)) { throw new Error('输入的 JSON 不是数组'); } return ParseJArray2List(json); } /** * 将json串转换成List对象,深度为1 * @param jsonString * @returns */ export function ParseJson2StringList(jsonString: string): string[] { const json = JSON.parse(jsonString); if (!Array.isArray(json)) { throw new Error('输入的 JSON 不是数组'); } return ParseJArray2List(json, true).map(x => x.toString()); } /** * 将Dictionary对象转换成json串 * @param dict * @returns */ export function ParseDictionary2Json(dict: { [key: string]: T }): string { return JSON.stringify(dict); } /** * 将IList对象转换成json串 * @param list * @returns */ export function ParseList2Json(list: any[]): string { return JSON.stringify(list); } /** * 将JObject对象转换成Dictionary对象 * @param json * @param depth1 * @returns */ function ParseJObject2Dictionary(json: any, depth1 = false): { [key: string]: any } { const result: { [key: string]: any } = {}; for (const key in json) { if (json.hasOwnProperty(key)) { let value: any = null; const item = json[key]; if (typeof item !== 'object' || item === null) { value = item; } else if (Array.isArray(item)) { value = depth1 ? item.toString() : ParseJArray2List(item); } else { value = depth1 ? JSON.stringify(item) : ParseJObject2Dictionary(item); } result[key] = value; } } return result; } /** * 将JArray对象转换成List对象 * @param json * @param depth1 * @returns */ function ParseJArray2List(json: any[], depth1 = false): any[] { const result: any[] = []; for (const item of json) { let value: any = null; if (typeof item !== 'object' || item === null) { value = item; } else if (Array.isArray(item)) { value = depth1 ? item.toString() : ParseJArray2List(item); } else { value = depth1 ? JSON.stringify(item) : ParseJObject2Dictionary(item); } result.push(value); } return result; }