【发布时间】:2014-06-07 07:23:36
【问题描述】:
有没有办法让 ServiceStack.Redis 使用 JSON.NET 而不是 ServiceStack.Text?
我问的原因是因为整数在 ServiceStack.Text 而不是 JSON.NET 中转换为字符串的特定情况
当通过网络向网络发送数据时,这是一件大事。
在我们的具体案例中,JSON.NET 将数据存储为
“偏移”:0
和 ServiceStack.Text 将数据存储为
“偏移”:“0”
为什么这很糟糕?在 javascript 中,29 + 0 = 29 但 29 + '0' = '290'。这意味着 array[29 + offset] 可以使用 ServiceStack.Text 产生奇怪的结果
我知道这是一个特定的用例,但使用 JSON.NET(其行为符合预期)而不是 ServiceStack.Text(它快 3 倍但行为不符合预期)会容易得多。
【问题讨论】:
-
这很有趣……你是从 C# 对象序列化到 redis 吗?这似乎是在序列化到 Redis 期间对您的原生类型的误解。
-
我依靠 ServiceStack.Redis 来序列化对象,它依靠 ServiceStack.Text 来进行实际的转换。 ServiceStack.Text 的行为不如预期,所以我想知道是否可以告诉 ServiceStack 使用经过验证的 JSON.NET(这是最流行的 nuget 包之一)
-
即使在 servicestack 源代码中修复了这个错误,但它首先存在的事实让我有足够的时间不信任 servicestack.text 而不是 json.net。
-
实际用例是这样的:C# 字典(字符串键、对象值)被转换为 JSON。 ServiceStack.Text 将整数存储为字符串。 JSON.NET 将整数存储为整数。
-
这可能是你的问题。通过使用对象值,ServiceStack 文本正在做出假设。有什么方法可以在序列化之前转换为正确的类型?
标签: c# javascript json redis servicestack