J'ai une méthode comme celle-ci.DataContractJsonSerializer et JsonConvert donnent des résultats différents
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;
}
Quand je convertir la chaîne à byteArray le résultat est comme ci-dessous: {"__type":"Login:#Project.ProjectName.Sockets","Password":"F9AAD6B7CFBD2A756101","Username":"UserName"}
Ce résultat est significatif mon serveur.
Cependant, je veux changer ce code en raison de certains problèmes de caractères.
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message));
return byteArray;
Maintenant je convertir byteArray à chaîne le résultat comme: {"Username":"UserName","Password":"F9AAD6B7CFBD2A756101"}
Aussi j'ai essayé d'utiliser JsonSerializerSettings
settings = new JsonSerializerSettings();
settings.TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full;
settings.TypeNameHandling = TypeNameHandling.Objects;
et le résultat est {"$type":"Project.ProjectName.Sockets.Login, ProjectName","Username":"UserName","Password":"F9AAD6B7CFBD2A756101"}
Quelle est la différence entre DataContractJsonSerializer et JsonConvert et il est po ssible d'obtenir le même résultat en utilisant JsonConvert.
Est-il possible de changer à la fois sérialisation et à la fin désérialisation avec 'Json.NET'? –
Le format des indications de type de Json.NET est codé en dur. Voir [Format de 'Special Property' ($ type) est codé en dur] (https://json.codeplex.com/workitem/22429). – dbc
Possible dupliquer? [JSON.Net - Modifier le champ $ type à un autre nom?] (Http://stackoverflow.com/questions/9490345/json-net-change-type-field-to-another-name). – dbc