JSON.Net序列化无法正常工作
本文关键字:工作 常工作 Net 序列化 JSON | 更新日期: 2023-09-27 17:59:20
我有这个类:
[Serializable]
public class ServerResponse
{
public string[] Response { get; set; }
public object Packet { get; set; }
public ServerResponse(string[] response, object packet){
this.Response = response;
this.Packet = packet;
}
public string[] getResponse() { return this.Response; }
public object getPacket() { return this.Packet; }
}
并使用以下内容转换为JSON:
static void writeToClient(TcpClient client, object message)
{
string json = JsonConvert.SerializeObject(message);
NetworkStream clientStream = client.GetStream();
byte[] buffer = NetworkHelper.GetMessageAsBytes(json);
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
}
但是,Packet
从未被序列化。有人看到我做错了什么吗?样本输出:
{"Response":["message","Authenticated"],"Packet":{}}
这就是我试图序列化的实际类:
[Serializable]
public class ActiveGameSession
{
private LoginServerSettings serverSettings;
private List<UserCharacter> sessionCharacters = new List<UserCharacter>();
private UserAccount sessionAccount;
public ActiveGameSession()
{
this.sessionCharacters = new List<UserCharacter>();
this.sessionAccount = null;
this.serverSettings = null;
}
public ActiveGameSession(List<UserCharacter> chars, UserAccount session)
{
this.sessionCharacters = chars;
this.sessionAccount = session;
}
#region setters
public void setCharacters(List<UserCharacter> chars)
{
this.sessionCharacters = chars;
}
public void setSession(UserAccount session)
{
this.sessionAccount = session;
}
public void setServerSettings(LoginServerSettings settings)
{
this.serverSettings = settings;
}
#endregion
#region getters
public List<UserCharacter> getCharacters()
{
return this.sessionCharacters;
}
public UserAccount getAccount()
{
return this.sessionAccount;
}
public LoginServerSettings getSettings()
{
return this.serverSettings;
}
#endregion
}
JSON.NET可能不支持object类型的对象的序列化。尝试使用更具体的类型。如果您想要有多个数据包类型,您可以尝试使用泛型或从公共基类派生。
编辑:此外,ActiveGameSession没有要反序列化的公共属性,请注意,getXXX、setXXX方法未被识别为属性。
您需要将表示数据包的对象强制转换为JSON.NET可以序列化的类型。尝试转换为字符串,然后重试。