在Zoho CRM Deluge中将JSONL响应转换为集合/列表的方法
在Deluge中将JSONL格式响应转换为JSON数组的解决方法
场景说明
对接第三方API返回JSONL格式响应,Deluge内置的toCollection("\n")和toJSONList()无法处理,因为响应被识别为无换行的连续字符串,需要将其转换为标准JSON数组以支持for-each循环处理。
基础解决方案(无嵌套JSON的情况)
如果返回的JSONL中每个对象都是扁平结构(无嵌套{}),可以通过字符串替换快速处理:
// 假设api_response是API返回的JSONL字符串 api_response = '{"Key1":"Value1","Key2":"Value2"}{"Key1":"Value1","Key2":"Value2"}' // 1. 在独立JSON对象间添加分隔逗号 processed_str = api_response.replace("}{", "},{") // 2. 包裹成标准JSON数组格式 json_array_str = "[" + processed_str + "]" // 3. 解析为Deluge可处理的JSON列表 json_list = toJSON(json_array_str) // 循环处理每个对象 for each item in json_list info "Key1值:" + item.Key1 info "Key2值:" + item.Key2 end for
进阶解决方案(支持嵌套JSON的情况)
如果JSONL中存在嵌套的JSON对象,基础方法会因误替换内部}{而失效,此时需要通过括号层级统计来精准拆分每个顶级JSON对象:
// 示例带嵌套的JSONL字符串 api_response = '{"Key1":"Value1","Key2":{"NestedKey":"NestedValue"}}{ "Key1":"Value1","Key2":"Value2"}' json_list = [] current_obj = "" bracket_count = 0 // 遍历字符串每个字符,跟踪括号层级 for each char in api_response.toCharArray() current_obj = current_obj + char if char == "{" bracket_count = bracket_count + 1 elif char == "}" bracket_count = bracket_count - 1 // 括号层级回到0时,说明一个完整的顶级JSON对象结束 if bracket_count == 0 // 解析当前对象并加入列表 json_obj = toJSON(current_obj) json_list.add(json_obj) current_obj = "" end if end if end for // 循环处理,支持嵌套字段读取 for each item in json_list info "Key1值:" + item.Key1 if item.Key2 is type map info "嵌套Key值:" + item.Key2.NestedKey else info "Key2值:" + item.Key2 end if end for
原理说明
- 基础方法利用JSONL的结构特征,通过替换
}{为},{快速构建数组格式,适合简单场景。 - 进阶方法通过统计括号的嵌套层级,精准识别每个顶级JSON对象的边界,避免嵌套结构导致的拆分错误,兼容性更强。
内容的提问来源于stack exchange,提问作者Yashwant Shukla
相关产品推荐
相关产品推荐

