簡體   English   中英

在C#中反序列化JSON

[英]Deserializing the JSON in C#

我有存儲在變量中的JSON對象。 JSON看起來像

{
 "data":
[
{"SNumber":"05",
 "LName":"TyJ",
 "LNameMarkup":"18/TyJ"
}]}

我為JSON創建了Model類,例如

namespace SetName.Models
{
public class SNameDTO
{     
 public class Datum
 {
  public string SNumber { get; set; }
  public string LName { get; set; }
  public string LNameMarkup { get; set; }
 }

 public class RootObject
 {
  public List<Datum> data { get; set; }
 }
 }
 }

現在我想反序列化此JSON,我可以從中獲取LName

  var retSName = GetSName(StockNumber);   //stores the JSON shown above

我用上面的代碼替換了

  SNameDTO.RootObject retSName = GetSName(StockNumber);

它拋出錯誤

Cannot implicitly convert type 'string' to 'SetName.Models.SNameDTO.RootObject'

我正在嘗試使用模型類而不是動態對象。

要實際反序列化JSON字符串,您需要做更多的事情。 如果您使用Json.Net(在NuGet上可用),則可以嘗試以下操作:

var myClass = JsonConvert.DeserializeObject<RootObject>(GetSName(StockNumber));

使用了Newtonsoft JSON nuget軟件包,能夠按如下所示對其進行反序列化,希望對您有所幫助。

class Program
{
    static void Main(string[] args)
    {
        var json = "{\"SNumber\":\"05\",\"LName\":\"TyJ\",\"LNameMarkup\":\"18/TyJ\"}";

        var jsonCollection =
            "[{\"SNumber\":\"05\",\"LName\":\"TyJ\",\"LNameMarkup\":\"18/TyJ\"},\r\n{\"SNumber\":\"10\",\"LName\":\"TyJ2\",\"LNameMarkup\":\"20/TyJ\"}]";

        var jsonRootObject = "{ \"data\" : [{\"SNumber\":\"05\",\"LName\":\"TyJ\",\"LNameMarkup\":\"18/TyJ\"}, {\"SNumber\":\"10\",\"LName\":\"TyJ2\",\"LNameMarkup\":\"20/TyJ\"}]}";

        var data = JsonConvert.DeserializeObject<SNameDTO.Datum>(json);
        var dataCollection = JsonConvert.DeserializeObject<List<SNameDTO.Datum>>(jsonCollection);
        var rootObject = JsonConvert.DeserializeObject<SNameDTO.RootObject>(jsonRootObject);
    }
}


public class SNameDTO
{
    public class Datum
    {
        public string SNumber { get; set; }
        public string LName { get; set; }
        public string LNameMarkup { get; set; }
    }

    public class RootObject
    {
        public List<Datum> data { get; set; }
    }
}

暫無
暫無

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

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