2012-06-06 177 views
1

我試圖序列化包含對象列表的類,但不是使用適當的值創建字符串,而是使用方法JsonConvert.SerializeObject()返回JSON字符串,其中列表中的所有值均爲空。序列化對象列表後,爲什麼所有值都爲空?

應該創建對象的字符串線如下:

string json = JsonConvert.SerializeObject(msg); 

其中msg是類

public class JSONPlayerListResponse 
{ 
    public List<Player> Players {get; set;} 

    public MessageType Action 
    { 
     get { return MessageType.GetPlayerListResponse; } 
    } 

    public string CommID { get; set; } 

    public string PlayerID { get; set; } 
} 

和播放器是

[DataContract] 
public class Player 
{ 
    [DataMember] 
    public string UserName { get; set; } 
    [DataMember] 
    public string Password { get; set; } 
    [DataMember] 
    public string CurrencyCode { get; set; } 
    [DataMember] 
    public string CountryCode { get; set; } 
    [DataMember] 
    public string FName { get; set; } 
    [DataMember] 
    public string LName { get; set; } 

    public decimal Ballance { get; set; } 

    public System.Collections.Concurrent.ConcurrentQueue<Bet> BetsHistory { get; set; } 

    public string ID { get; set; } 

    public string Name { get; set; } 

} 

列表中的玩家msg實例包含一個元素,其值FName被設置爲Player1,但返回字符串爲後續G:

{\"Players\":[{\"UserName\":null,\"Password\":null,\"CurrencyCode\":null,\"CountryCode\":null,\"FName\":null,\"LName\":null}],\"Action\":18,\"CommID\":null,\"PlayerID\":\"27de1\"} 

有誰知道爲什麼在返回字符串中的所有值都爲空,如何修改邏輯,以生成包含實際值的字符串?

回答

1

看來你並沒有初始化Players真實值。 Players.Add(new Player())是不夠的。

試試這個。

var result = JsonConvert.SerializeObject(
     new JSONPlayerListResponse() { 
      Players = new List<Player>() { new Player(){UserName="test name"} } 
     } 
    ); 

您將看到UserName不爲空。

相關問題