Mule 4如何移除payload开头特殊字符/前缀 提取标准JSON结构
JSON前缀无关字符移除方案
核心逻辑非常简单:不需要针对乱码做特殊编码转换或者逐字符过滤,只要定位到原始字符串里第一个左大括号{的下标位置,从这个位置开始截取到字符串末尾,就能得到你需要的、从{起始的完整JSON内容。
常用语言实现代码
- Python
def clean_json(raw_content: str) -> str: brace_pos = raw_content.find("{") if brace_pos == -1: raise ValueError("内容中无合法JSON对象") return raw_content[brace_pos:] # 测试用例 raw = '''�~�{ "Employee": "Sara", "number": { "id": "d1q2", "designation": "CYUL" } }''' print(clean_json(raw))
- JavaScript/Node.js
const cleanJson = (rawContent) => { const bracePos = rawContent.indexOf("{"); if (bracePos === -1) throw new Error("内容中无合法JSON对象"); return rawContent.slice(bracePos); } // 测试用例 const raw = `�~�{ "Employee": "Sara", "number": { "id": "d1q2", "designation": "CYUL" } }`; console.log(cleanJson(raw));
- Java
public class JsonCleanUtil { public static String cleanJsonPrefix(String rawContent) { int bracePos = rawContent.indexOf("{"); if (bracePos == -1) throw new IllegalArgumentException("内容中无合法JSON对象"); return rawContent.substring(bracePos); } public static void main(String[] args) { String raw = "�~�{\n" + " \"Employee\": \"Sara\",\n" + " \"number\": {\n" + " \"id\": \"d1q2\",\n" + " \"designation\": \"CYUL\"\n" + " }\n" + "}"; System.out.println(cleanJsonPrefix(raw)); } }
补充说明
- 这个方案不会修改
{之后的任何内容,不会破坏原有JSON的结构和字段值 - 截取完成后可以直接调用对应语言的原生JSON解析方法校验结果,如果解析失败,说明
{之后的内容本身存在JSON语法错误,和前缀乱码无关 - 如果你处理的payload可能返回JSON数组(首个有效字符是
[),只需要调整定位逻辑,同时查找第一个{和第一个[的位置,取更小的下标做截取即可。
内容的提问来源于stack exchange,提问作者user6769597
相关产品推荐
相关产品推荐

