【发布时间】:2019-03-06 11:20:24
【问题描述】:
我正在尝试反序列化 json 数据,但由于某种原因它总是返回零值。我尝试了不同的方法,但我无法获取该值
var result = JsonConvert.DeserializeObject<Tickers>(json);
foreach (Rates rate in result)
{
Console.WriteLine(rate.EUR);
}
Json 看起来像这样:
[
{
"base":"USD",
"date":"2018-06-12",
"rates":{
"NZD":1.4053046000828844,
"EUR":0.8288437629506838
//plus many more
}
}
]
我有这些课程:
public class Tickers
{
public string baseCurrency { get; set; }
public string date { get; set; }
public List<Rates> tickers { get; set; }
}
public class Rates
{
public double NZD { get; set; }
public double EUR { get; set; }
//etc
}
public partial class RootObject
{
public string @base { get; set; }
public string date { get; set; }
public List<Rates> rates { get; set; }
}
【问题讨论】:
-
这似乎是XY problem。目前状态下的问题也是不完整的,因此不清楚。阅读How to Ask,然后编辑问题以提供可用于重现问题的minimal reproducible example,从而更好地理解所问的内容。
-
我很困惑。为什么你有一个 Tickers 类和一个 RootObject 类?尽管 json 数据是一个 json 数组(其中包含一个与您的 Tickers 类不匹配的 json 对象),但您为什么要尝试反序列化 Tickers 类类型的对象?不幸的是,您在问题中提出的内容没有多大意义......
-
我已经尝试过使用 RootObject 但它不起作用,这就是为什么我尝试了更多其他类的原因。反序列化成 RO 返回 SerializationException
-
是的,尝试反序列化为 Tickers 类型也会导致反序列化器抛出异常(参见我之前的评论)。 “我已经尝试过使用 RootObject” 不要只是尝试随机、任意的东西。因为这种方式更有可能你只会得到随机的、任意的程序行为,而不是预期/期望的行为。 仔细检查 json 数据的结构。它是一个带有 json 对象的 json 数组/列表。因此,您应该反序列化 100% 匹配 json 数组中的 json 对象的(类)类型的数组/列表/集合...
-
不要repost your question,如果它作为副本被关闭。改为编辑它以解释为什么它不是重复的。