gpt4 book ai didi

c# - 有没有办法让 ServiceStack.Redis 使用 JSON.NET 而不是 ServiceStack.Text?

转载 作者:可可西里 更新时间:2023-11-01 11:12:07 24 4
gpt4 key购买 nike

有没有办法让 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 倍但行为不符合预期)要容易得多。

最佳答案

它不会将数字存储为文本,ServiceStack.Text 中的实际行为:

public class HasOffset
{
public int Offset { get; set; }
}

var dto = new HasOffset { Offset = 1 };
string json = dto.ToJson();
json.Print(); //prints {"Offset":1}

var fromJson = json.FromJson<HasOffset>();
Assert.That(fromJson.Offset, Is.EqualTo(1));

如果您尝试使用 JsonObject 反序列化它它被解析为 Dictionary<string,string>字典它被强制转换为一个字符串。同样,如果您尝试将其存储到 object 中序列化程序不知道应将其转换为什么类型,因此将其保留为字符串。

关于c# - 有没有办法让 ServiceStack.Redis 使用 JSON.NET 而不是 ServiceStack.Text?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23227727/

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