gpt4 book ai didi

c# - ServiceStack Jsv 序列化程序无法反序列化 Dictionary

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:17 25 4
gpt4 key购买 nike

我正在使用 OrmLite,我的一个实体具有 DateTime 和 int 类型字典的属性,但它无法反序列化该属性。我发现这是 Jsv 序列化程序问题。我没有通过测试:

[Test]
public void Can_serialize_and_deserialize_Dictionary_with_DateTime_key()
{
JsConfig.DateHandler = JsonDateHandler.TimestampOffset;
var expected = new Dictionary<DateTime, int> {{DateTime.Now, 5}};
var serializedString = TypeSerializer.SerializeToString(expected);
var actual = TypeSerializer.DeserializeFromString<Dictionary<DateTime, int>>(serializedString);
Assert.AreEqual(actual.Keys.First().Year, expected.Keys.First().Year);
}

谁能建议如何解决这个问题?这似乎是一般的 Jsv 格式问题,而不是实现错误。 (但我可能是错的)

最佳答案

作为在此问题将在 servicestack.text 中修复之前的解决方法,我为 DateTime 和 DateTime 分配了我自己的序列化函数?

JsConfig<DateTime>.SerializeFn = DateTimeSerializer.ToShortestXsdDateTimeString;
JsConfig<DateTime?>.SerializeFn = time => time.HasValue ? DateTimeSerializer.ToShortestXsdDateTimeString(time.Value) : null;

这些是在 servicestack.text 中使用的相同函数,但是当您分配自己的函数时,库将检查您的值是否需要转义。

关于c# - ServiceStack Jsv 序列化程序无法反序列化 Dictionary<DateTime, ___>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com