如何使用DateTime属性从Json(通过Python)反序列化MessagePack?

2024-05-14 04:13:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将从python客户机生成的MessagePack消息反序列化为.net对象。在约会时间上遇到了麻烦。有趣的是,呆在竞技场也不管用。在

Newtonsoft能够正确地反序列化json。尽管MessagePack的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属性,所有代码都可以完美地工作。在


Tags: 对象jsongetstring序列化bytepublicset