我有一些JSON消息,我试图将其转换为动态对象,以便可以访问消息内的DataTables列表。始终会有一个DataTables列表,但是该列表的大小可以从1到许多DataTables有所不同。消息示例如下:
{
"MessageHeader": "40ec2943-05d4-46f8-a052-030df39bfb16",
"ResponseId": null,
"TimeToProcess": 0.0355295,
"CreatedDateTime": "2019-07-29T03:05:04.8430078+10:00",
"TableReference": {
"TableName": "CONSOLIDATED",
"ReferenceKeyId": 1699,
"IncludedTables": [
"TLog010000ItemSale",
"TLog040000Tender",
"TLog050000TicketEnd",
"TLog210000TicketStart",
"TLog_Header"
]
},
"SAPStoreReference": "A777",
"SourceData": [
[
{
"TRS_KEY": 1699,
"TRS_PTR": 59
}
],
[
{
"TRS_KEY": 1699,
"TRS_PTR": 61,
"Opcode": null,
"TndrID": 1,
"ChangeTndr": false
},
{
"TRS_KEY": 1699,
"TRS_PTR": 64,
"Opcode": null
}
],
[
{
"TRS_KEY": 1699,
"TER_ID": 1,
"TICKET_ID": 556,
"WRK_DT": null,
"TRS_PTR": 57,
"DATE_TIME": "2019-07-29T03:04:28",
"TRS_TYPE": 0,
"END_PTR": 79
}
]
],
"fromLocation": {
"LocationType": 0,
"locationIdentifier": "P777S001"
},
"toLocation": {
"LocationType": 1,
"locationIdentifier": ""
}
}
我正在通过以下内容转换为动态
dynamic dynMessage = JsonConvert.DeserializeObject<dynamic>(message.Body);
context.Logger.LogLine($"Dynamic unpack message header {dynMessage.MessageHeader}");
context.Logger.LogLine($"Dynamic unpack table name {dynMessage.TableReference.TableName}");
并且可以很好地访问上述元素,因为它们是根级别。但是,我不清楚用于访问SourceData中的数据表列表的语法。原始消息从以下对象转换为JSON
public List<DataTable> SourceData { get; set; }
我希望能够将JSON数据转换回DataTables,然后可以遍历和使用它。我只是不确定在动态对象中实际访问这些元素的语法是什么。
编辑:抱歉,我试图缩短JSON以使它出现的时间不长,我已经塞满了一些格式,并且可能砍了几个方括号。 SourceData的结构将始终为
SourceData [
[数据表],[数据表],[数据表]等。
]