Fastjson2--fix

当 JSON 字符串中包含无引号的数字 key 时,fastjson2 的反序列化行为不一致

BUG描述&&原因

当 JSON 字符串中包含无引号的数字 key 时,fastjson2 的反序列化行为不一致
字段存在的时候可以正确处理无引号数字 key 的逻辑
字段不存在的时候无法处理

具体改动

在 skipObject 方法中添加对无引号数字 key 的处理逻辑 在utf16/utf-8中

  • 新增了一个重载方法 skipNumber(..., boolean allowColon),允许在跳过数字后紧跟着冒号(:),这在处理未加引号的数字作为键的 JSON 结构时是必需的。
  • 在判断数字结束字符时,新增了 !(allowColon && ch == ':') 条件,即如果允许冒号且当前字符是冒号,则不抛出错误。
  • 在解析对象键值对时,增加了对未加引号的数字作为键的处理逻辑。
  • 如果当前字符是数字或 '-' '+',则认为这是一个未加引号的数字键,调用 skipNumber(..., true) 来跳过数字,并手动跳过紧随其后的冒号和空白字符。
  • 否则,退回到原有的 skipName 方法来处理字符串类型的键。