C# 无法反序列化json字符串
下面是我的JSON结构:C# 无法反序列化json字符串,c#,json,json.net,C#,Json,Json.net,下面是我的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",
{
"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
]
]
}
}
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; }
}
我使用的是NewtonsoftJSON。为了使其具有强类型,考虑到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
]
]
}
}
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为null。我想不出这个问题。请指导我解决问题。1。)创建Mydata对象并加载所有变量 2.)序列化它(如果它是web服务输出,您可以在浏览器中观察json字符串) 3.)根据json的序列化格式,您可以确定它接受哪种json作为回报 4.)在找到json后,它希望您可以构造这种json,以便它可以对其进行反序列化 5.)例如: Mydata对象json字符串(我们称之为序列化Mydata)如下所示:
{
"status":"active",
"data":{
"MyValues":[
{
"Name":"k",
"ID":"122"
},
{
"Name":"a",
"ID":"123"
}
]
}
}
那么您的类期望这种格式的json字符串只将其转换回Mydata对象(我们称之为反序列化)您的模型应该是:
public class Data
{
public List<List<object>> MyValues { get; set; }
}
public class MyData
{
public string status { get; set; }
public Data data { get; set; }
}
我的最佳建议是:使用类创建一个对象,并将其序列化为JSON。您的数据是一个数组,但您有一个具有一系列属性的类。您可以查看序列化的输出以了解如何构造数据。JSONAdmins中没有名为First、Second等的属性,为什么对这个问题投反对票?您需要使用转换器将JSON中的内部数组值映射到
MyValues
类中。看见事实上,我认为这个问题本质上是那个问题的重复。另一个重复(或接近重复):.Admins,我知道这是一个重复的问题。但是,我无法将JSON结构映射到模型。尤其是我对列出我的价值观感到困惑。谢谢@Yanga的帮助。上帝保佑!