【发布时间】:2019-12-09 17:00:50
【问题描述】:
我正在循环遍历动态对象的集合,每个对象从其他地方的 DataTable 开始,然后转换为 Json,然后 Json 转换为动态对象,现在我想将其转换回 DataTable。
JSON 看起来像这样:
[
{
"TRS_KEY": 1716,
"TRS_PTR": 54,
"PLUID": 9314807005306,
"Ext11": false,
"Subtract": false,
"Cancel": false,
"Negative": false,
"FuelItemCancel": false,
"StaffDiscAllow": true,
"PriceOveride": false,
"OnSale": false,
"WSPriceOverride": false,
"ManPrice": false,
"ManPriceAllw": false,
"NoManWgnt": false,
"WgtItem": false,
"DecItem": false,
"Gallons": false,
"ChainPrv": false,
"NonMerch": false,
"StoreCpn": false,
"VendorCpn": false,
"DiscAlw": true,
"Scan": false,
"ReadSrv": null,
"NextInfo": false,
"ReplUnknown": false,
"GSTExclFollow": false,
"PriceGrid": false,
"DepID": 1070,
"MSU": 1,
"RetnID": 0,
"TaxF": 16,
"QTY": 1,
"Price": 8,
"Amount": 8,
"ExclPrice": 8,
"ExclAmount": 7.27,
"CaseQty": false,
"TailFlags": 0,
"NoStockDeduct": false,
"NoLoyaltyPoints": false
}
]
方法如下:(dynamicTatble是保存JSON数据的动态对象)
foreach (dynamic dynamicTable in dynMessage.SourceData)
{
context.Logger.Log($"table -> {dynMessage.TableReference.IncludedTables[tableIndex].ToString()} outer -> {dynamicTable}");
string s = JsonConvert.SerializeObject(dynamicTable);
DataTable dt = (DataTable)JsonConvert.DeserializeObject(s, (typeof(DataTable)));
context.Logger.LogLine($"DataTableRows={dt.Rows.Count}");
tableIndex++;
}
我正在尝试从动态转换为 JSON 字符串,然后将 JSON 字符串转换为 DataTable,但出现以下错误:
发生了一个或多个错误。 (无法反序列化当前的 JSON 数组(例如 [1,2,3])转换为“System.Data.DataTable”类型,因为 类型需要一个 JSON 对象(例如 { "name": "value" } ) 正确反序列化。要修复此错误,请将 JSON 更改为 JSON 对象(例如 { "name": "value" }) 或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、 IList),例如可以从 JSON 数组反序列化的 List。 JsonArrayAttribute 也可以添加到类型中以强制它 从 JSON 数组反序列化。路径'',第 1 行,位置 1。): System.Threading.Tasks.Task.Wait 处的 AggregateException(Int32 毫秒超时,CancellationToken 取消令牌)在 lambda_method(Closure, Stream, Stream, LambdaContextInternal)
在 lambdaS2CProcessMessage.Function.FunctionHandler(SQSEvent evnt, ILambdaContext 上下文)在 C:\Users\jmatson\Source\Repos\AWS-S2C-ProcessMessage\lambdaS2CProcessMessage\Function.cs:line 154
【问题讨论】:
-
我认为日志是不言自明的。当它需要一个对象时,您正在传递一个要转换的数组..
-
yip - 这不是我以前见过的任何 json
-
废话,我刚刚注意到括号......所以它只是在转换为 DataTable 时引用数组索引的情况吗?