gpt4 book ai didi

c# - 反序列化字符串包含带逗号的 int

转载 作者:太空狗 更新时间:2023-10-30 01:00:05 25 4
gpt4 key购买 nike

我无法将 json 中带逗号的数字反序列化为 int。它抛出这个异常:

Newtonsoft.Json.JsonReaderException : '无法将字符串转换为整数:24,992。路径“请求”,第 1 行

这是我的代码:

public class PriceModel
{
public DateTime Date { get; set; }
public int Requests { get; set; }
public decimal Price { get; set; }
}
string json = "{\"Date\":\"2018-03-23\",\"Requests\":\"24,992\",\"Price\":\"95.96\"}";

PriceModel value = JsonConvert.DeserializeObject<PriceModel>(json, new JsonSerializerSettings
{
Culture = new CultureInfo("en-US")
});

我希望“请求”属性的值为 24992。

有没有办法解决这个问题?

谢谢

最佳答案

好的,经过一些研究提出了以下解决方案,您无需更改任何类型或任何内容,它就可以按照您的要求工作。

虽然反序列化不使用返回类型 var 而是使用 PriceModel 然后其他的东西将保持不变。

创建新类 ProcessChildModel,它继承自 ProcessModel 并覆盖 Requests 属性。

    public class PriceModel
{
public DateTime Date { get; set; }
public int Requests { get; set; }
public decimal Price { get; set; }
}

public class PriceModelChild : PriceModel
{
public new string Requests
{
set
{
int num;
if (int.TryParse(value, NumberStyles.AllowThousands,
CultureInfo.InvariantCulture, out num))
{
base.Requests = num;
}

}
}
}

然后使用新的子模型反序列化数据

string json = "{\"Date\":\"2018-03-23\",\"Requests\":\"24,992\",\"Price\":\"95.96\"}";
PriceModel value = JsonConvert.DeserializeObject<PriceModelChild>(json);

关于c# - 反序列化字符串包含带逗号的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49495534/

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