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(){ EmitTypeinformation = EmitTypeinformation.Never};总结
以上是内存溢出为你收集整理的c# – DataContractJsonSerializer和JsonConvert给出不同的结果全部内容,希望文章能够帮你解决c# – DataContractJsonSerializer和JsonConvert给出不同的结果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)