簡體   English   中英

為什么序列化對象列表后所有值都為空?

[英]Why are all values null after serializing the object list?

我嘗試序列化包含對象列表的類,但方法JsonConvert.SerializeObject()而不是使用適當的值創建字符串,而是返回列表中所有值均為null的JSON字符串。

從對象創建字符串的行如下:

string json = JsonConvert.SerializeObject(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實例中的Players列表包含一個元素,其值FName設置為Player1,但返回字符串如下:

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

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

似乎您沒有使用真實值初始化Players Players.Add(new Player())是不夠的。

嘗試這個。

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

您將看到UserName不為null。

暫無
暫無

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

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