为什么序列化对象列表后所有值都为空

本文关键字:序列化 对象 列表 为什么 | 更新日期: 2023-09-27 18:36:20

我尝试序列化包含对象列表的类,但该方法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 实例中的玩家列表包含一个元素,其值 FName 设置为 Player1,但返回字符串如下:

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

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

为什么序列化对象列表后所有值都为空

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

试试这个。

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

您将看到用户名不为空。