我有这样的方法.
using (MemoryStream memoryStream = new MemoryStream()) { DataContractJsonSerializer dataContractSerializer = new DataContractJsonSerializer(typeof(Message),this.kNowTypes); dataContractSerializer.WriteObject(memoryStream,message); byte[] byteArray = memoryStream.ToArray(); memoryStream.Close(); return byteArray; }
当我将byteArray转换为字符串时,结果如下所示:
{ “__type”: “登录:#Project.ProjectName.sockets”,“密码”: “F9AAD6B7CFBD2A756101”,“用户名”: “用户名”}
这个结果对我的服务器有意义.
但是,由于某些字符问题,我想更改此代码.
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message)); return byteArray;
现在我将byteArray转换为字符串结果,如:
{ “用户名”: “用户名”,“密码”: “F9AAD6B7CFBD2A756101”}
我也试过使用JsonSerializerSettings
settings = new JsonSerializerSettings(); settings.TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterassemblyStyle.Full; settings.TypeNameHandling = TypeNameHandling.Objects;
结果是
{“$type”:“Project.ProjectName.sockets.Login,ProjectName”,“用户名”:“用户名”,“密码”:“F9AAD6B7CFBD2A756101”}
DataContractJsonSerializer和JsonConvert之间有什么区别,使用JsonConvert可以获得相同的结果.
解决方法
将以下设置传递给DataContractJsonSerializer,您永远不应获取任何类型信息:
DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings() { EmitType@R_568_4045@ion = EmitType@R_568_404[email protected] };
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。