结论先给:如果工具原本接受一种对象格式,现在改为支持另一种,输入规范不能只做字段映射,而要先判断“变化发生在入口、处理中间层还是结果层”。入口变了,改提交模板即可;处理层变了,必须同步改校验规则和失败重试逻辑;结果层变了,输入规范可以暂时不动,先核对输出是否仍能回填业务系统。下面用可操作的判断顺序说明。
对象格式变化通常表现为三类:字段增减、结构嵌套变化、取值类型变化。字段增减只影响提交模板;结构嵌套变化会影响解析路径;取值类型变化最容易被忽略,比如原来接受字符串的编号改为接受整数,或原来接受单个值改为接受数组。
判断动作:把旧输入样例和新输入样例并排放,逐字段标注“新增、删除、改名、类型变化、层级变化”。标注完成后,如果只有新增和改名,改动集中在输入模板;如果出现层级变化或类型变化,必须同时改校验规则,否则工具可能接受提交但返回不可用结果。
当变化只发生在提交入口,例如从表单字段改为结构化对象,输入规范应优先改三处:
一个实际动作:在提交前加一层“字段映射检查”,把映射失败的记录单独落盘,而不是直接丢弃。结果是你能看到是哪些旧字段在新入口下无法对应,下一步就能决定是补映射还是要求上游改数据。
如果工具内部处理逻辑改了,比如原来按行处理,现在按对象数组处理,输入规范只改字段名是不够的。此时要检查:
假设一个场景:旧输入是每行一条记录,新输入是每条记录一个对象,对象里允许嵌套多个子项。如果输入规范仍按“一行一条”校验,子项数量就不会被限制,可能导致处理超时。此时应把校验规则改为“外层记录数 + 内层子项数”双重限制,并给出超限时的截断或拒绝策略。
反例:如果格式变化只发生在结果层,比如工具输出从表格变为嵌套对象,但提交入口和处理逻辑没变,那么输入规范可以暂时不动。此时急着改输入规范,反而可能引入不必要的字段映射错误。正确动作是先核对输出能否被下游系统解析,再决定是否需要在输入侧增加标记字段来辅助回填。
另一个容易误判的情况:工具文档说支持新格式,但你的业务数据里仍有大量旧格式记录。此时不应一次性切换输入规范,而应保留双格式兼容期,并在输入规范里写明“旧格式记录走兼容分支,新格式记录走主分支”。兼容期结束的条件是旧格式记录清零,而不是文档更新当天。
改完输入规范后,不要只看工具是否接受提交。准备三组样例:旧格式正常值、新格式正常值、边界值(空值、超长、类型不符)。分别提交并记录返回结果。如果旧格式正常值在新规范下被拒绝,说明兼容分支没写全;如果边界值被接受但结果异常,说明校验规则还缺类型检查。
根据结果决定下一步:兼容分支缺失就补映射;类型检查缺失就补校验;两者都通过但结果仍不可用,则回到结果层核对输出格式,而不是继续改输入规范。这样每一步动作都有明确的判断依据,不会在格式变化时反复改同一处。