JSON 意外语法错误 - 日期解析/编码/解码

Posted

技术标签:

【中文标题】JSON 意外语法错误 - 日期解析/编码/解码【英文标题】:JSON Unexpected Syntax error - Date parsing / encoding / decoding 【发布时间】:2021-12-31 13:15:51 【问题描述】:

我将日期转换为负 1 天,格式为 YYYY-MM-DD 。

这是我减去 1 天的方法。

var date_to_selector         = $(this).parent().find("input[name=date_to]");
var date_to = date_to_selector.val();
    var last_night = new Date(date_to_selector.val().toString());
        last_night.setDate(last_night.getDate()-1);
    var last_night_date = last_night.toLocaleString("en-CA", year: "numeric", month: "2-digit", day: "2-digit").split("/").join("-");

在请求中使用它时,我得到一个语法错误,其中:

 Array
(
    [soapFault] => Array
        (
            [faultcode] => soap:Client
            [faultstring] => Unmarshalling Error: cvc-datatype-valid.1.2.1: '' is not a valid value for 'date'. 
        )

)

在浏览器调试中,我可以以正确的格式看到正确的日期,但是,当发布到 URL 时,它会将 $last_night_date 视为我认为的无效 JSON?

【问题讨论】:

错误信息没有提到 JSON。有些东西应该是日期,但却是一个空字符串。 而且该错误也不是语法错误。 以上是什么,应该是日期的部分不是日期,不管上面是什么 所述错误来自 XML 解析器 - 这里不涉及 JSON。您需要将该字段的 WSDL 从 xsd:data 更改为 xsd:string 如何将上述日期 YYYY-MM-DD 设置为 xsd:data 格式? 【参考方案1】:

这可能是因为

    并不是所有的 Bowser 都支持所有的日期格式。 浏览器或客户端-服务器之间的格式支持不匹配可能会导致错误。 您的请求参数解析器抛出错误,因为它不理解您的格式

你应该在字符串化之后发送日期,然后再次解析它。 如果处理多个时区,则将其字符串化为 ISO 格式。

【讨论】:

你能举个例子来说明可能性3吗?我之前使用 strototime 在后端执行此操作 - 成功发布但服务器响应为 500 通过 JS,您可以使用“new Date("2021-11-21").toISOString()”。在 ISO 中更改后发送到服务器。 所以它只接受 toISOString 不接受 toLocaleString? “也许...” 不是答案。这应该是一条评论。

以上是关于JSON 意外语法错误 - 日期解析/编码/解码的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2/Web Api - json 解析错误语法错误意外结束输入

bson.json_util 日期时间编码和解码最佳实践

ASN.1语法以及在python中如何编码解码

解析错误:语法错误,文件意外结束,期待'`' [重复]

解析错误:意外的令牌,预期的“,”和语法错误:意外的令牌'['[重复]

解析错误:语法错误,意外'' [关闭]