【发布时间】:2020-08-19 08:14:01
【问题描述】:
我是 Json 方面的新手,以下是我从内部 REST API 调用之一返回的 JSON 字符串之一:
{
"odata.metadata":"https://ABC.XYZ.com/ERP10TESTNSSO/api/v1/Erp.BO.ABCCodeSvc/$metadata#Epicor.RestApi.ABCCodes/@Element",
"Company":"93100",
"ABCCode1":"A",
"CountFreq":1,
"ExcludeFromCC":false,
"StockValPcnt":"0",
"PcntTolerance":"0.00",
"CalcPcnt":false,
"CalcQty":false,
"CalcValue":false,
"QtyTolerance":"0",
"ValueTolerance":"0",
"ShipToCustNum":0,
"SysRevID":"6066188743",
"SysRowID":"5b7e2172-7f7a-445e-983d-f230e050153d",
"BitFlag":0,
"RowMod":""
}
请告诉我,如何将其转换为 C# 数据表?
我尝试了以下代码(由另一类技术人员发布)
dynamic jsonObject = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonContent);
DataTable dt = JsonConvert.DeserializeObject<DataTable>(Convert.ToString(jsonObject.Value));
但此代码在 jsonObject.Value 处引发错误。
请帮我解决它...
【问题讨论】:
-
使用 Json.Net 你可以deserialize directly to a data table... 但是,你的 json 只包含一个对象,而不是一个 json 数组,所以我不确定将它反序列化为数据表是正确的选择这里...
-
每次您使用
dynamic时,世界上的某些地方都会在悲伤的孤独中死去……(带有随机无益的错误) -
你需要做几个步骤,首先,阅读Json,你遇到的主要问题是dt看到列等等,你正在抛出数据,没有命名它,这没有任何意义。其次,定义一个类,其中properties是Json属性的名称,然后创建对象并反序列化,我相信你可以弄清楚如何从对象转换为数据表