You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8下如何构造可被Jackson解析为Map<String,Double>的合法JSON

原JSON语法错误说明

你提供的片段存在3个不符合RFC 8259 JSON规范的问题,直接校验会报错:

  • 整个JSON对象缺失开头的左大括号{,结构不完整
  • detail对象下的所有键名(比如LOAN_CAPITAL)没有用双引号包裹,JSON要求所有对象键必须是双引号包裹的字符串类型
  • 数值中使用逗号,作为小数分隔符,JSON标准仅支持点号.作为小数分隔符,逗号在JSON中是值分隔符,会导致数值解析断裂
修正后的合法JSON
{
  "reversedSellId": "reversed trxId from PayU",
  "merchant": "idMerchant",
  "detail": {
    "LOAN_CAPITAL": 1234.123,
    "LOAN_INTEREST": 1234.123,
    "LOAN_ADMON_FEE": 1234.123,
    "LOAN_IVA_ADMON_FEE": 1234.123,
    "LOAN_OVERDUE_INTEREST": 0,
    "LOAN_COLLECTION_MANAGEMENT": 0,
    "LOAN_IVA_COLLECTION_MANAGEMENT": 0
  },
  "currency": "COP"
}
Jackson 转换说明

在Java 8环境下用Jackson转Map<String, Double>时注意:

  • 直接提取detail节点调用convertValue方法即可完成转换,基础数值类型Jackson默认可以自动映射为Double
  • 如果上游数据源无法修改,固定返回逗号分隔的小数格式,可以自定义JsonDeserializer,在解析逻辑中将数值字符串的逗号替换为点号后再转Double,避免解析失败
  • 不要给数值类型的值加双引号,否则会被识别为字符串,转换时会抛出类型不匹配异常

内容的提问来源于stack exchange,提问作者Margarita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:24:41