簡體   English   中英

反序列化為數據集時,JsonConvert.DeserializeObject 不起作用

[英]JsonConvert.DeserializeObject is not working when deserializing to a DataSet

我試圖將 JSON 字符串轉換為數據集,但它拋出了一個錯誤:

讀取 DataTable 時出現意外的 JSON 令牌。 預期 StartArray,得到 StartObject。 路徑“數據”,第 1 行,position 9。

來自DataSet dataSet = (DataSet)JsonConvert.DeserializeObject(json, (typeof(DataSet))); 線。

來自服務器的 JSON 響應看起來不錯; 這是我的代碼:

public void GlobalApiCall(string API_Name, string postData)
{
    ConnectionClass t1 = new ConnectionClass();
    var link = ConfigurationManager.AppSettings["ReportUrl"];

    var request1 = (HttpWebRequest)WebRequest.Create(link + API_Name);
    var data1 = Encoding.ASCII.GetBytes(postData);

    request1.Method = "POST";
    request1.ContentType = "application/x-www-form-urlencoded";
    request1.ContentLength = data1.Length;

    using (var stream = request1.GetRequestStream())
    {
        stream.Write(data1, 0, data1.Length);
    }

    var response1 = (HttpWebResponse)request1.GetResponse();

    var responseString1 = new StreamReader(response1.GetResponseStream()).ReadToEnd();
    String json = responseString1.Replace("\"", "'");
    DataSet dataSet = (DataSet)JsonConvert.DeserializeObject(json, (typeof(DataSet)));
}

和我的 JSON 響應:

{
  "data": {
    "Table": [
      {
        "FirmId": 67,
        "FirmName": "FURNITURE ELECTRONICS & HOME APPLIANCES ",
        "BranchId": 44317,
        "BranchName": " PERINTHALMANNA",
        "Address": "PERINTHALMANNA",
        "Contact": "123456",
        "HelpLine": "454656",
        "MailId": "qwerty@GMAIL.COM",
        "GSTINNo": "wewrerw",
        "BranchRegNo": "08/2019",
        "PAN": "rwerewr",
        "OtherNotes": "",
        "State": "KERALA",
        "StateCode": "32",
        "Delivery": "Y"
      }
    ]
  }
}

我無法找到問題。 我應該從哪里開始尋找?

您收到此錯誤是因為 JSON 不是反序列化器期望轉換為DataSet的格式。 特別是,DataSet 數據似乎包裝在外部 object 中。 嘗試像這樣反序列化 JSON :

DataSet dataSet = JObject.Parse(json)["data"].ToObject<DataSet>();

小提琴: https://dotnetfiddle.net/aOiaeH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM