C#如何修复SerializationException奇怪的错误?

我有此代码:

public static void SaveData<T>(string filename,T playerData) where T : class
{
    BinaryFormatter formatter = new BinaryFormatter();
    filename = Application.persistentDataPath + "/" + filename;

    using (var stream = File.OpenWrite(filename))
        formatter.Serialize(stream,playerData);
}

public static T LoadData<T>(string filename) where T : class
{ 
    filename = Application.persistentDataPath + "/" + filename;

    if (File.Exists(filename))
    {
        BinaryFormatter formatter = new BinaryFormatter();

        using (var stream = File.OpenRead(filename))
            return formatter.Deserialize(stream) as T;
    }
    else
    {
        Debug.LogError("File not found...");
        return null;
    }
}

如您所见,我有2种静态方法用于序列化,反序列化任何类型的数据。 首先,我要序列化由newtonsoft.json lib创建的字符串(json):

var settings = new JsonSerializerSettings();
var json = JsonConvert.SerializeObject(Wevent,Formatting.None);
SaveData<string>(fileName,json);

但是,然后,我尝试将同一文件加载回去,我在这行上遇到了异常:

using (var stream = File.OpenWrite(filename))
    formatter.Serialize(stream,playerData);

完整错误消息:

  

SerializationException:输入流不是有效的二进制格式。起始内容(以字节为单位)为:5B-0D-0A-20-20-7B-0D-0A-20-20-20-20-22-54-65-78-74

l2912503 回答:C#如何修复SerializationException奇怪的错误?

我使用了@dbc答案:

“为什么要使用BinaryFormatter序列化一个已经序列化的JSON字符串?为什么不只是将该字符串写入磁盘?如果您可以手动看到问题所在。此外,您是否可以编辑问题以共享最小的可复制性例如,您写道,*然后我试图将同一文件加载回去,这行上有Exception:*但您显示的代码也用于序列化,而不是反序列化“

(我已将字符串写入磁盘,这对我来说很好)

本文链接:https://www.f2er.com/3025770.html

大家都在问