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

JSON Unexpected Syntax error:日期解析编解码及SOAP请求日期校验报错咨询

问题根因说明

你收到的SOAP错误已明确问题:

Unmarshalling Error: cvc-datatype-valid.1.2.1: '' is not a valid value for 'date'.

这说明提交到接口的日期字段值为空字符串,不是你推测的无效JSON问题,排查方向先对齐到「为什么日期字段提交时为空」即可。

排查步骤

  • 第一步:补全日期计算的合法性校验
    你当前的日期计算逻辑没有做输入校验,如果date_to_selector.val()为空、或者格式不符合要求,new Date()会生成Invalid Date对象,后续格式化后就会得到空值或非法字符串。可以替换原日期计算逻辑为更稳妥的实现:
var date_to_selector = $(this).parent().find("input[name=date_to]");
var date_to = date_to_selector.val().trim();
// 校验输入是否为空或格式不符合YYYY-MM-DD
if (!date_to || !/^\d{4}-\d{2}-\d{2}$/.test(date_to)) {
    console.error('输入日期非法:', date_to);
    return;
}
var last_night = new Date(date_to);
// 校验日期对象是否生成成功
if (isNaN(last_night.getTime())) {
    console.error('日期转换失败:', date_to);
    return;
}
last_night.setDate(last_night.getDate() - 1);
// 手动拼接YYYY-MM-DD,避免locale实现差异导致格式异常
var last_night_date = [
    last_night.getFullYear(),
    String(last_night.getMonth() + 1).padStart(2, '0'),
    String(last_night.getDate()).padStart(2, '0')
].join('-');
console.log('计算完成的日期:', last_night_date);
  • 第二步:校验请求赋值逻辑
    在发送请求前打印完整请求体,排除参数名写错、日期值被后续代码覆盖、序列化逻辑异常的问题:
// 发送前打印完整请求参数,确认日期字段是否正确赋值
console.log('完整请求体:', JSON.stringify(requestParams));
// 单独校验日期字段合法性,替换为实际提交的字段名
if (!requestParams.target_date_field || !/^\d{4}-\d{2}-\d{2}$/.test(requestParams.target_date_field)) {
    console.error('请求中的日期字段非法:', requestParams.target_date_field);
    return;
}
  • 第三步:校验接口适配逻辑
    如果前端打印的请求参数正常,检查后端适配逻辑:
    1. SOAP接口需要提交XML格式的请求体,确认你没有用JSON格式提交,Content-Type是否为text/xml
    2. 确认日期字段放在XML的正确节点下,没有被转义或者遗漏

常见解决方案

  1. 偶现报错:就是输入日期为空或格式非法导致,补全第一步的校验逻辑即可
  2. 必现报错:大概率是参数名不匹配、请求格式不符合SOAP接口要求,对齐接口文档调整请求结构即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:36:03