我们如何从动态对象转换为具体对象>?
how do we convert from a dynamic object to a concrete object>?
我正在尝试将 dynamic
类型显式转换为具体类型并获得以下内容:
Newtonsoft.Json: Can not convert from System.DateTimeOffset to
System.DateTime.
我有以下具体模型:
public class RtfTiffMatchModel : TableEntity
{
public RtfTiffMatchModel()
{
}
public string visitId { get; set; }
public DateTime rtfReceivedAt { get; set; }
public string rtfFilename { get; set; }
public DateTime tifReceivedAt { get; set; }
public string tifFilename { get; set; }
public string rtfRowKey { get; set; }
public string tifRowKey { get; set; }
}
我也有这个动态类型:
{
"visitId": "bbbb-2021-11305",
"rtfReceivedAt": "2021-11-15T17:45:10.2006842Z",
"rtfFilename": "usap_abs_adams_alex_10202021_bbbb-2021-11305_000_111_20211024.rtf",
"tifReceivedAt": "2021-11-15T17:45:10.2006842Z",
"tifFilename": "usap_ar_adams_alex_10202021_bbbb-2021-11305_000_111_20211024_0800.tif",
"rtfRowKey": "FromjjjvilleBbbBilling",
"tifRowKey": "FromjjjvilleBbbBilling",
"PartitionKey": "FromjjjvilleBbbBilling",
"RowKey": "68955313-8f66-4bf0-ad6d-abf635bdb537",
"Timestamp": "0001-01-01T00:00:00+00:00",
"$AzureWebJobsParentId": "e9d2e73d-170a-4367-9c4f-4beb054e79e5"
}
我正在尝试将上面的 dynamic
类型转换为 RtfTiffMatchModel
:
var rtfTiffMatch = new RtfTiffMatchModel { PartitionKey = match.PartitionKey,
RowKey = match.RowKey,
rtfReceivedAt = (DateTime)match.rtfReceivedAt,
rtfFilename = match.rtfFilename,
rtfRowKey = match.RowKey,
tifFilename = match.tifFilename,
tifReceivedAt = (DateTime)match.ReceivedAt,
tifRowKey = match.RowKey,
visitId = match.visitId };
*我做错了什么?如何将其转换为具体类型?
来自评论:
(DateTime)match.rtfReceivedAt
is throwing your error. Newtonsoft thinks match.rtfReceivedAt
is a DateTimeOffset
. ((DateTimeOffset)match.rtfReceivedAt).DateTime
should work as a quick/dirty fix. See Converting between DateTime and DateTimeOffset.
请注意,您在 tifReceivedAt: (DateTime)match.ReceivedAt
处似乎有错字。你的动态对象上没有ReceivedAt
属性。 Here's a dotnetfiddle 显示正在转换。
我正在尝试将 dynamic
类型显式转换为具体类型并获得以下内容:
Newtonsoft.Json: Can not convert from System.DateTimeOffset to System.DateTime.
我有以下具体模型:
public class RtfTiffMatchModel : TableEntity
{
public RtfTiffMatchModel()
{
}
public string visitId { get; set; }
public DateTime rtfReceivedAt { get; set; }
public string rtfFilename { get; set; }
public DateTime tifReceivedAt { get; set; }
public string tifFilename { get; set; }
public string rtfRowKey { get; set; }
public string tifRowKey { get; set; }
}
我也有这个动态类型:
{
"visitId": "bbbb-2021-11305",
"rtfReceivedAt": "2021-11-15T17:45:10.2006842Z",
"rtfFilename": "usap_abs_adams_alex_10202021_bbbb-2021-11305_000_111_20211024.rtf",
"tifReceivedAt": "2021-11-15T17:45:10.2006842Z",
"tifFilename": "usap_ar_adams_alex_10202021_bbbb-2021-11305_000_111_20211024_0800.tif",
"rtfRowKey": "FromjjjvilleBbbBilling",
"tifRowKey": "FromjjjvilleBbbBilling",
"PartitionKey": "FromjjjvilleBbbBilling",
"RowKey": "68955313-8f66-4bf0-ad6d-abf635bdb537",
"Timestamp": "0001-01-01T00:00:00+00:00",
"$AzureWebJobsParentId": "e9d2e73d-170a-4367-9c4f-4beb054e79e5"
}
我正在尝试将上面的 dynamic
类型转换为 RtfTiffMatchModel
:
var rtfTiffMatch = new RtfTiffMatchModel { PartitionKey = match.PartitionKey,
RowKey = match.RowKey,
rtfReceivedAt = (DateTime)match.rtfReceivedAt,
rtfFilename = match.rtfFilename,
rtfRowKey = match.RowKey,
tifFilename = match.tifFilename,
tifReceivedAt = (DateTime)match.ReceivedAt,
tifRowKey = match.RowKey,
visitId = match.visitId };
*我做错了什么?如何将其转换为具体类型?
来自评论:
(DateTime)match.rtfReceivedAt
is throwing your error. Newtonsoft thinksmatch.rtfReceivedAt
is aDateTimeOffset
.((DateTimeOffset)match.rtfReceivedAt).DateTime
should work as a quick/dirty fix. See Converting between DateTime and DateTimeOffset.
请注意,您在 tifReceivedAt: (DateTime)match.ReceivedAt
处似乎有错字。你的动态对象上没有ReceivedAt
属性。 Here's a dotnetfiddle 显示正在转换。