微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有这样的方法.

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] 举报,一经查实,本站将立刻删除。

相关推荐