Fiddler使用正则表达式替换响应内容

在进行接口测试或前端调试时,我们经常需要利用代理工具(如 Fiddler、Charles、Whistle)对服务器返回的 JSON 数据进行拦截和修改。相比于简单的字符串替换,使用 正则表达式 (Regular Expressions) 能够更灵活地处理空格、换行以及上下文依赖的数据修改。

本文整理了针对特定业务场景的正则替换方案,旨在实现对 JSON 数值的精准 Mock。

一、 场景一:基于上下文的数值替换

在某些复杂的 JSON 结构中,多个字段可能共用相同的 Key(例如都叫 "data"),仅能通过同级字段 "label" 来区分业务含义(如“可用余额”与“不可用余额”)。为了防止误改,我们需要匹配包含 datadataFormatTypelabel 的完整代码块。

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"

三、 正则语法核心解析

在上述表达式中,使用了以下关键符号来确保匹配的兼容性和准确性:

  1. \s* (空白字符兼容)

    • 含义:匹配零个或多个空白字符(包括空格、制表符、换行符)。
    • 作用:无论 JSON 是被压缩的("key":"value")还是被格式化的("key": "value"),该正则均能成功命中。
  2. \. (小数点转义)

    • 含义:匹配字面意义上的点号(.)。
    • 作用:在正则中 . 通常代表“任意字符”,为了精准匹配金额中的小数点(如 0.00),必须使用 \. 进行转义。
  3. \( \) (括号转义)

    • 含义:匹配字面意义上的括号。
    • 作用:小括号在正则中用于分组捕获。在匹配文本内容“可用余额(元)”时,必须对括号进行转义,即写成 \(元\)
  4. 整体替换策略

    • 原则:始终采用 Key + Value 的整体替换。
    • 优势:直接替换数字(如仅查找 0.00)极易误伤其他字段;而包含 Key 的替换能确保数据修改的唯一性,且不会破坏 JSON 的逗号分隔符或闭合结构。