【问题标题】:Why are all values null after serializing the object list?为什么序列化对象列表后所有值都为空?
【发布时间】:2012-11-14 05:41:02
【问题描述】:

我尝试序列化包含对象列表的类,但不是使用适当的值创建字符串,而是方法 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 实例中的列表 Players 包含一个元素,其值 FName 设置为 Player1,但返回字符串如下:

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

有谁知道为什么返回的字符串中的所有值都是空的,以及如何修改逻辑以生成包含实际值的字符串?

【问题讨论】:

    标签: c# json json.net


    【解决方案1】:

    您似乎没有使用实际值初始化PlayersPlayers.Add(new Player()) 还不够。

    试试这个。

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

    您会看到 UserName 不为空。

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多