2012-04-03 32 views
1

我們有一個json序列化器和解串器下載,它讀取配置文件對象查找,但它沒有放入列表中的客戶端項目。這裏是JSONJson沒有將元素的子陣列映射到我的對象

{"Profile": [{ 
       "Name":"Joe", 
       "Last :"Doe", 
       "Client": 
         { 
          "ClientId":"1", 
          "Product":"Apple", 
          "Message":"Peter likes apples" 
          }, 
        "Date":"2012-02-14" 
       }]} 

所以在我的個人資料類,我有

public class Profile 
    { 
    public string Name {get; set;} 
    public string Last {get; set;} 
    public List<Client> Client {get; set;} 
    public DateTime dDate {get; set;} 

     public Profile() 
     { 
     } 
     public Profile BuildEntity() 
     { 
      Profile profile = new Profile(); 
      profile.Name = this.Name; 
      profile.Last = this.LastName; 
      profile.Client = this.client; 
      profile.dDate = this.dDate; 
      return dDate; 

     } 
    } 

現在,當我調試的所有項目都除了列表值。有誰知道它可能是什麼?

注:這是被派駐到我們的Profile.asmx Web服務

問候

+0

在離開代碼的相關代碼方面做得很好。另外,什麼樣的問題是'「有人知道它可能是什麼嗎?」'Mebe這是一隻長頸鹿。 – 2012-04-03 14:43:06

+0

Boo,感謝您的留言,我正在與JSON和Web服務合作。我會很樂意提供更多信息。什麼是相關的代碼片?不需要粗魯:) – user710502 2012-04-03 14:56:26

+0

'dDate'和'Date'有什麼區別?另外,你使用的是什麼JSON庫? – 2012-04-03 15:01:07

回答

1

你宣佈客戶端爲:

public List<Client> Client {get; set;} 

但你的數據是這樣的:

"Client": 
{ 
    "ClientId":"1", 
    "Product":"Apple", 
    "Message":"Peter likes apples" 
} 

我覺得期望的數據更像是:

"Client": 
[{ 
    "ClientId":"1", 
    "Product":"Apple", 
    "Message":"Peter likes apples" 
}] 

反序列化可能是e xpecting一組對象,而不僅僅是一個對象。

+0

非常感謝你的解釋和幫助 – user710502 2012-04-03 14:57:09

1

也許客戶端應該是一個數組,而不是一個對象,因爲你模擬聯合國是一個列表。試試這個:

   "Client": 
        [{ 
         "ClientId":"1", 
         "Product":"Apple", 
         "Message":"Peter likes apples" 
         }], 
+0

非常感謝你會嘗試 – user710502 2012-04-03 14:57:19

1

將來我會推薦使用LinqPad進行測試,然後執行。以下是工作代碼示例。

 

    string JASON = @" 
     {""Profile"": [{ 
         ""Name"":""Joe"", 
         ""Last"":""Doe"", 
         ""Client"": 
           { 
           ""ClientId"":""1"", 
           ""Product"":""Apple"", 
           ""Message"":""Peter likes apples"" 
           }, 
         ""Date"":""2012-02-14"" 
         }]} 
    "; 
    void Main() 
    { 
     var jason = JsonConvert.SerializeObject(Container.Instance()); 
     JASON.Dump(); 
     jason.Dump(); 
     JsonConvert.DeserializeObject(JASON).Dump(); 
    } 

    // Define other methods and classes here 
    class Container 
    { 
     public Container() 
     { 
      Profile = new List { }; 
     } 
     public List Profile { get; set; } 

     public static Container Instance() 
     { 
      var c = new Container(); 
      c.Profile.Add(
       new Profile { 
        Name = "Joe", 
        Last = "Doe", 
        Date = "2012-02-14", 
        Client = new Client{ ClientId = 1, Product = "Apple", Message = "Peter likes apples" } 
      }); 
      return c; 
     } 
    } 

    class Client 
    { 
     public int ClientId { get; set; } 
     public string Product { get; set; } 
     public string Message { get; set; } 
    } 

    class Profile 
    { 
     public string Name {get; set;} 
     public string Last {get; set;} 
     public Client Client {get; set;} 
     public string Date {get; set;} 
     public Profile() 
     { } 
    } 

+0

PS:我也會推薦使用JSON.NET – Max 2012-04-03 15:14:50