【问题标题】:Convert Json string into C# DataTable将 Json 字符串转换为 C# DataTable
【发布时间】: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属性的名称,然后创建对象并反序列化,我相信你可以弄清楚如何从对象转换为数据表

标签: c# json


【解决方案1】:

试试这个:

 string 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\":\"\"}";

 json = $"[{json}]";

 DataTable dt = JsonConvert.DeserializeObject<DataTable>(json);

在您的 json 字符串中添加 [ ]。

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    相关资源
    最近更新 更多