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序列化无法正常工作

JSON.NET可能不支持object类型的对象的序列化。尝试使用更具体的类型。如果您想要有多个数据包类型,您可以尝试使用泛型或从公共基类派生。

编辑:此外,ActiveGameSession没有要反序列化的公共属性,请注意,getXXX、setXXX方法未被识别为属性。

您需要将表示数据包的对象强制转换为JSON.NET可以序列化的类型。尝试转换为字符串,然后重试。