Fiddler使用正则表达式替换响应内容
在进行接口测试或前端调试时,我们经常需要利用代理工具(如 Fiddler、Charles、Whistle)对服务器返回的 JSON 数据进行拦截和修改。相比于简单的字符串替换,使用 正则表达式 (Regular Expressions) 能够更灵活地处理空格、换行以及上下文依赖的数据修改。
本文整理了针对特定业务场景的正则替换方案,旨在实现对 JSON 数值的精准 Mock。
一、 场景一:基于上下文的数值替换
在某些复杂的 JSON 结构中,多个字段可能共用相同的 Key(例如都叫 "data"),仅能通过同级字段 "label" 来区分业务含义(如“可用余额”与“不可用余额”)。为了防止误改,我们需要匹配包含 data、dataFormatType 和 label 的完整代码块。
1. 修改“可用余额”
目标:将 label 为“可用余额(元)”的 data 值由 "0.00" 修改为 "8888.00"。
- 查找模式 (Match Pattern):
"data":\s*"0\.00",\s*"dataFormatType":\s*"AMOUNT",\s*"label":\s*"可用余额\(元\)" - 替换内容 (Replace String):
"data": "8888.00", "dataFormatType": "AMOUNT", "label": "可用余额(元)"
2. 修改“不可用余额”
目标:将 label 为“不可用余额(元)”的 data 值由 "0.00" 修改为 "10.00"。
- 查找模式 (Match Pattern):
"data":\s*"0\.00",\s*"dataFormatType":\s*"AMOUNT",\s*"label":\s*"不可用余额\(元\)" - 替换内容 (Replace String):
"data": "10.00", "dataFormatType": "AMOUNT", "label": "不可用余额(元)"
二、 场景二:指定唯一 Key 的数值替换
针对 Key 全局唯一的字段,我们只需匹配 Key + Value 的组合即可。为了保证 JSON 格式的健壮性,替换时应保留 Key 不变。
| 业务字段 | 目标数值 | 查找模式 (Match Pattern) | 替换内容 (Replace String) |
|---|---|---|---|
| 可用总额 | 100.23 | "totalAmount":\s*"0\.00" | "totalAmount": "100.23" |
| 保证金 | 122 | "bailAmount":\s*"0\.00" | "bailAmount": "122" |
| 冻结余额 | 188 | "totalFreezeAmount":\s*"0\.00" | "totalFreezeAmount": "188" |
三、 正则语法核心解析
在上述表达式中,使用了以下关键符号来确保匹配的兼容性和准确性:
-
\s*(空白字符兼容)- 含义:匹配零个或多个空白字符(包括空格、制表符、换行符)。
- 作用:无论 JSON 是被压缩的(
"key":"value")还是被格式化的("key": "value"),该正则均能成功命中。
-
\.(小数点转义)- 含义:匹配字面意义上的点号(.)。
- 作用:在正则中
.通常代表“任意字符”,为了精准匹配金额中的小数点(如0.00),必须使用\.进行转义。
-
\( \)(括号转义)- 含义:匹配字面意义上的括号。
- 作用:小括号在正则中用于分组捕获。在匹配文本内容“可用余额(元)”时,必须对括号进行转义,即写成
\(元\)。
-
整体替换策略
- 原则:始终采用
Key + Value的整体替换。 - 优势:直接替换数字(如仅查找
0.00)极易误伤其他字段;而包含 Key 的替换能确保数据修改的唯一性,且不会破坏 JSON 的逗号分隔符或闭合结构。
- 原则:始终采用