我尝试序列化包含对象列表的类,但该方法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 以及如何修改逻辑以生成包含实际值的字符串?
您似乎没有使用实际值初始化Players
。 Players.Add(new Player())
还不够。
试试这个。
var result = JsonConvert.SerializeObject(
new JSONPlayerListResponse() {
Players = new List<Player>() { new Player(){UserName="test name"} }
}
);
您将看到用户名不为空。