【发布时间】:2018-09-08 13:11:14
【问题描述】:
下面是我的 JSON 结构:
{
"status": "success",
"data": {
"MyValues": [
[
"2018-09-06T09:15:00+0530",
1030,
1038.75,
1017.2,
1030.9,
542542
],
[
"2018-09-07T09:15:00+0530",
1032.7,
1035.45,
1015.5,
1025.35,
410461
]
]
}
}
我正在使用 Newtonsoft JSON。为了使它成为强类型,我创建了下面的类,考虑到 JSON 结构:
class MyValues
{
public DateTime TimeStamp { get; set; }
public decimal First { get; set; }
public decimal Second { get; set; }
public decimal Third { get; set; }
public decimal Fourth { get; set; }
public decimal Fifth { get; set; }
}
class Data
{
public MyValues[] MyValues { get; set; }
}
class MyData
{
public string Status { get; set; }
public Data Data { get; set; }
}
最后,下面是我写的代码。它从 jd.txt 文件中读取上面的 json 对象并尝试解析它:
using (StreamReader file = File.OpenText(@"jd.txt"))
{
Newtonsoft.Json.JsonSerializer serializer = new Newtonsoft.Json.JsonSerializer();
MyData MyData = (MyData)serializer.Deserialize(file, typeof(MyData));
}
当我运行上面的代码时,我看到 MyData.Data.MyValues 为空。我无法找出问题所在。
请指导我解决问题
【问题讨论】:
-
我最好的建议:使用您的类创建一个对象并将其序列化
toJSON。您的数据是一个数组,但您有一个具有一堆属性的类。您可以查看序列化输出以了解如何构建数据。 -
JSON 中没有名为 First、Second 等的属性
-
管理员,否决这个问题的原因是什么?
-
您需要使用转换器将 JSON 中的内部数组值映射到您的
MyValues类中。见How to deserialize a JSON array into an object using Json.Net?。事实上,我认为这个问题本质上是那个问题的重复。