json - JsonSerializer 无法在 Azure 函数中反序列化 DateTimes
问题描述
我有一个 Azure 函数,它从队列 fx 接收一些 JSON。
{"FromDate":"2020-05-26T07:15:00.3714532+00:00","ToDate":"2020-06-25T07:15:00.3714532+00:00"}
使用System.Text.Json.JsonSerializer
我正在尝试将此 JSON 反序列化为以下类型的对象:
public class DateRange
{
public DateTime? FromDate { get; set; }
public DateTime? ToDate { get; set; }
}
反序列化:
var dateRange = JsonSerializer.Deserialize<DateRange>(json);
这在 Azure 中不起作用 -FromDate
并且ToDate
始终被解析为默认日期1/1/0001 12:00:00 AM
。奇怪的是 JSON 是从另一个带有JsonSerializer.Serialize(dateRange)
. 但是,如果我在本地运行 Azure 函数,它确实可以工作。
从文档看来,日期/时间格式
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'FFFFFFF('+'/'-')HH':'mm"
支持在 JSON中发送(这是有道理的,因为它是由 创建的JsonSerializer.Serialize()
)。
为什么它无法反序列化我的 JSON?为什么它可以在本地工作,但不能在 Azure 上工作?
解决方案
您是否使用绑定的队列作为函数的输入(并触发它)?您能否展示如何将序列化的字符串写入队列,然后在反序列化之前如何从队列中读取它?您确定从消息中获取的字符串与您的示例中的字符串完全一样吗?我之所以问,是因为绑定到函数的队列中的消息预计将采用 base64 编码,如果您忘记这一点,则会导致很多问题。而且由于它在本地工作,我会责怪传输机制(队列)改变行为。
推荐阅读
- botframework - 尝试创建 Orchestrator 快照时出现间歇性
- java - 使用带有YaHP Html to Pdf Converter的java将带有日语字符的HTML转换为PDF的问题
- c# - 在我的应用程序中查看跟踪 asp.net 核心捕获的选项有哪些?
- python - 在 Django ORM 中与其他参数 LEFT JOIN
- google-cloud-firestore - 更改了 Firestore 查询和索引链接不再显示在控制台中
- fft - DFT 使用的数据点转换
- c# - MVC 属性路由 RoutePrefix 不适用于默认路由
- flutter - 尝试登录并且该字段为空时验证器不起作用
- firebase - 在 MacBook m1 pro 中 Flutter 中集成 firebase 包的任何解决方案
- swift - 如何将可观察对象发布的整数变量绑定到 SwiftUI 中的 textField?