DataContractJsonSerializer and JsonConvert give different results

I have such a method.

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;
}

When I convert byteArray to a string, the result is as follows: {"__type":"Login:#Project.ProjectName.Sockets","Password":"F9AAD6B7CFBD2A756101","Username":"UserName"}

This result makes sense for my server.

However, I want to change this code due to some character issues.

byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message));
return byteArray;

Now I convert byteArray to a string result, for example: {"Username":"UserName","Password":"F9AAD6B7CFBD2A756101"}

I also tried to use JsonSerializerSettings

 settings = new JsonSerializerSettings();
 settings.TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full;
 settings.TypeNameHandling = TypeNameHandling.Objects;

and result {"$type":"Project.ProjectName.Sockets.Login, ProjectName","Username":"UserName","Password":"F9AAD6B7CFBD2A756101"}

What is the difference between DataContractJsonSerializer and JsonConvert, and you can get the same result using JsonConvert.

+4
source share
1 answer

Pass the following parameters to DataContractJsonSerializerand you should never get type information:

DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings()
{
    EmitTypeInformation = EmitTypeInformation.Never
};
0

Source: https://habr.com/ru/post/1607779/


All Articles