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 解析错误语法错误意外结束输入