0
所以這裏有雲,C#二進制序列化錯誤
我有以下的JSON字符串:
{"sTest":"Hello","oTest":{"vTest":{},iTest:0.0}}
而且我反序列化使用Newtonsoft.JSON如下面的那樣:
Dictionary<string, dynamic> obj = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json)
問題是,我有一個要求,我需要使用BinaryFormatter將該對象序列化爲二進制文件。並通過執行以下操作:
Stream stream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/_etc/") + "obj.dat", FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(stream, e.props);
stream.Close();
我得到了一個錯誤說:
類型 'Newtonsoft.Json.Linq.JObject' 在大會「Newtonsoft.Json,版本= 6.0.0.0,文化=中立,PublicKeyToken = xxxxxxxxxxxxxxx'未被標記爲可串行化。
我不知道如何繼續。有什麼我失蹤?有任何想法嗎?謝謝!
這是否意味着我無法將動態對象序列化爲二進制文件?有沒有另外的工作可以讓我這麼做?無論如何,非常感謝,隊友! –
@GalihDonoPrabowo:那麼真的沒有像「動態對象」那樣的東西 - 你試圖序列化一個'JObject'。 'BinaryFormatter'不知道你的變量使用'dynamic'。就我個人而言,我建議嘗試擺脫這一要求 - .NET二進制格式化程序非常脆弱並且以各種方式煩人......如果您真正的需求是緊湊的表示形式,那麼還有很多其他選項。 (和「二進制文件」並不意味着「必須使用.NET binary serializatoin」) –
可能用['[Serializable]']標記類(https://msdn.microsoft.com/en-us/ library/system.serializableattribute%28v = vs.110%29.aspx)會比實現['ISerializable']更簡單(https://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable %28V = vs.110%29.aspx)。 – dbc