2012-10-17 71 views
1

我想反序列化在C#中的json字符串。以下是jsonstring和我使用的課程。但是在反序列化之後,它給出了空值。那麼,我有什麼問題?json反序列化在c#

string jsonString = @"{'status':1,'data':[{'report_date':'2012-10-16','subid':'000ebc7d-d9fc-4822-923e-c7ac6027f5cd','revenue':'0.00','clicks':'0'},{'report_date':'2012-10-16','subid':'0013eeb2-54e3-4ef1-9fff-9bc5c146858e','revenue':'0.00','clicks':'0'},{'report_date':'2012-10-16','subid':'002c3efc-cf82-466e-a94b-994f548c27fc','revenue':'0.00','clicks':'0'},{'report_date':'2012-10-16','subid':'003bac5b-81a7-4042-8e4c-b882c4d31534','revenue':'0.00','clicks':'0'},{'report_date':'2012-10-16','subid':'00626129-c888-45c0-8401-c44f64d0e1c2','revenue':'0.00','clicks':'0'},{'report_date':'2012-10-16','subid':'007da905-e053-48e5-800a-9815d3da6a34','revenue':'0.00','clicks':'0'},{'report_date':'2012-10-16','subid':'ff8011fb-0dfd-4336-b3f3-0a915100767d','revenue':'0.00','clicks':'0'},{'report_date':'2012-10-16','subid':'ff855a9e-3f39-48fd-b27b-5eb15221acbd','revenue':'0.00','clicks':'0'}],'messages':[],'errors':[],'code':200,'time':{'click':1350456414}}"; 



    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
    PM.AdknowledgeRevenue.Entities.RevenueList collection = serializer.Deserialize<PM.AdknowledgeRevenue.Entities.RevenueList>(jsonString); 

類我用事先

+0

正如順便說一句,你知道你的整個'Revenue'類機構可以是5號線長,如果你使用自動實現的屬性, 對? –

+0

雅其正確, – user1622436

回答

0

下面的代碼工作..

var result = new JavaScriptSerializer().Deserialize<Result>(jsonString); 

public class Result 
{ 
    public int status; 
    public List<Item> data; 
} 

public class Item 
{ 
    public string report_date; 
    public string subid; 
    public string revenue; 
    public string clicks; 
} 

或使用Json.Net

var result = JsonConvert.DeserializeObject<Result>(jsonString); 

public class Result 
{ 
    [JsonProperty("status")] 
    public int Status; 
    [JsonProperty("data")] 
    public List<Item> Data; 
} 

public class Item 
{ 
    [JsonProperty("report_date")] 
    public string ReportDate; 
    [JsonProperty("subid")] 
    public string SubId; 
    [JsonProperty("revenue")] 
    public string Revenue; 
    [JsonProperty("clicks")] 
    public string Clicks; 
} 
+0

我需要使用什麼名稱空間jsonproperty – user1622436

+0

它是在Json.Net庫'Newtonsoft.Json' –

+0

完成,但report_date得到空值。當我將其數據類型更改爲datetime時,它將給出默認的最短日期值 – user1622436

3

 public class Revenue 
     { 
      #region private members 
      string _reportDate; 
      Guid subId; 
      Decimal revenue; 
      int clicks; 
      int status; 


      #endregion 

      #region public members 
      public int Status 
      { 
       get { return status; } 
       set { status = value; } 
      } 
      public string ReportDate 
      { 
       get { return _reportDate; } 
       set { _reportDate = value; } 
      } 
      public Guid SubId 
      { 
       get { return subId; } 
       set { subId = value; } 
      } 
      public Decimal Revenue1 
      { 
       get { return revenue; } 
       set { revenue = value; } 
      } 
      public int Clicks 
      { 
       get { return clicks; } 
       set { clicks = value; } 
      } 
      #endregion 
    } 

    public class RevenueList 
    { 
    public IEnumerable<Revenue> RevenueCollection { get; set; } 
    } 

感謝我覺得json是不正確的格式。字符串應該用雙引號括起來。

您可以驗證您的json here