当前位置: 首页 > 编程语言 > C#

OptimizedJSONserializer-deserializerasextensionmethod-分享

时间:2023-04-11 00:35:03 C#

优化的JSON序列化器/反序列化器作为扩展方法?我想让它尽可能容易地将任何对象序列化为JSON,然后简单地将其转换回type=safe对象。谁能告诉我“FromJSONString”扩展方法中我做错了什么?编辑为了方便起见,下面是一个完整的功能扩展方法。如果您看到错误,请告诉我。publicstaticstringToJSONString(thisobjectobj){using(varstream=newMemoryStream()){varser=newDataContractJsonSerializer(obj.GetType());ser.WriteObject(stream,obj);返回Encoding.UTF8.GetString(stream.ToArray());}}publicstaticTFromJSONString(thisstringobj){using(varstream=newMemoryStream(Encoding.UTF8.GetBytes(obj))){DataContractJsonSerializerser=newDataContractJsonSerializer(typeof(T));Tret=(T)ser.ReadObject(stream);返还;这在继承对象的情况下不能正常工作。反序列化只返回底层对象,不返回序列化后的对象。如下所示更改序列化将解决此问题。publicstaticStringToJSONString(thisObjectobj){using(varstream=newMemoryStream()){varser=newDataContractJsonSerializer(typeof(object));ser.WriteObject(stream,obj);返回Encoding.UTF8.GetString(流.ToArray());您必须将JSON字符串提供给要解码的MemoryStream。具体来说,您必须更改:MemoryStreamstream1=newMemoryStream();实际检索字符串字节:MemoryStreamstream1=newMemoryStream(Encoding.UTF8.GetBytes(obj))也就是说,我还要确保进行适当的内存清理并处理我的对象......而且,而不是使用一个StreamReader(也应该处理),只需将内存流重新编码为UTF-8字符串。请参阅下面的清理代码。以上是C#学习教程:OptimizedJSONserializer/deserializerasextensionmethod?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——publicstaticStringToJSONString(thisObjectobj){using(varstream=newMemoryStream()){varser=newDataContractJsonSerializer(obj.GetType());ser.WriteObject(stream,obj);返回Encoding.UTF8.GetString(stream.ToArray());}}publicstaticTFromJSONString(thisstringobj){using(varstream=newMemoryStream(Encoding.UTF8.GetBytes(obj))){DataContractJsonSerializerser=newDataContractJsonSerializer(typeof(T));Tret=(T)ser.ReadObject(stream);返还;}}本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: