Как я могу десериализовать MessagePack из Json (через Python) со свойством DateTime? - PullRequest
2 голосов
/ 02 мая 2019

Я пытаюсь десериализовать сообщение MessagePack, сгенерированное из клиента Python, в объект .net.Встретить некоторые проблемы с DateTimes.Интересно, что на C # арене это тоже не работает.

Newtonsoft способна правильно десериализовать JSON.Хотя MessageJack ToJson возвращает действительный Json, десериализация объекта завершается неудачей.

[DataContract]
public class TestClass
{
    [DataMember]
    public string TestPropertyA { get; set; }
    [DataMember]
    public string TestPropertyB { get; set; }
    [DataMember]

    public DateTime EventTimeStamp { get; set; }
}

        //Move from Json string to an object
        String jsonStringFromPython = "{\"TestPropertyA\":\"Hello\",\"TestPropertyB\":\"World\",\"EventTimeStamp\":\"2019-05-02T16:04:30.7812850Z\"}";
        TestClass anObject = JsonConvert.DeserializeObject<TestClass>(jsonStringFromPython);

        //Generate byte arrays for Messagepack
        Byte[] arrFromAString = MessagePackSerializer.FromJson(jsonStringFromPython);
        Byte[] arrFromAnObj = MessagePackSerializer.Serialize<TestClass>(anObject);
        CompositeResolver.RegisterAndSetAsDefault(PrimitiveObjectResolver.Instance, ContractlessStandardResolver.Instance);

        //Message pack understands the object-generated byte array
        var backtoobject = MessagePackSerializer.Deserialize<TestClass>(arrFromAnObj);

        //Message pack DOES NOT UNDERSTAND the string-generated byte array and fails with code is invalid. code:188 format:fixstr'
        var backtoobject2 = MessagePackSerializer.Deserialize<TestClass>(arrFromAString);

Последняя строка кода выше завершается неудачно, но все работает без сбоев, если я удаляю свойство DateTime из строки / объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...