У меня есть такой метод.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":"Login:#Project.ProjectName.Sockets","Password":"F9AAD6B7CFBD2A756101","Username":"UserName"}
Этот результат имеет смысл моего сервера.
Однако я хочу изменить этот код из-за некоторых проблем с символами.
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message));
return byteArray;
Теперь я конвертировать ByteArray, нанизывать результат как: {"Username":"UserName","Password":"F9AAD6B7CFBD2A756101"}
Кроме того, я пытался использовать JsonSerializerSettings
settings = new JsonSerializerSettings();
settings.TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full;
settings.TypeNameHandling = TypeNameHandling.Objects;
и результат {"$type":"Project.ProjectName.Sockets.Login, ProjectName","Username":"UserName","Password":"F9AAD6B7CFBD2A756101"}
В чем разница между DataContractJsonSerializer и JsonConvert, и это по чтобы получить тот же результат с помощью JsonConvert.
ли это возможность изменить и сериализации и десериализации конец с 'Json.NET'? –
Формат подсказок типа Json.NET жестко запрограммирован. См. [Формат «Специальное свойство» (тип $) жестко запрограммирован] (https://json.codeplex.com/workitem/22429). – dbc
Возможный дубликат? [JSON.Net - Изменить поле $ type на другое имя?] (Http://stackoverflow.com/questions/9490345/json-net-change-type-field-to-another-name). – dbc