c# – DataContractJsonSerializer和JsonConvert给出不同的结果

c# – DataContractJsonSerializer和JsonConvert给出不同的结果,第1张

概述我有这样的方法. using (MemoryStream memoryStream = new MemoryStream()){ DataContractJsonSerializer dataContractSerializer = new DataContractJsonSerializer(typeof(Message), this.knowTypes); dataContr 我有这样的方法.

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给出不同的结果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1226531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存