如何反序列化JSON字符串
本文关键字:字符串 JSON 反序列化 | 更新日期: 2023-09-27 18:28:27
我正在尝试为下面的JSON字符串创建一个模型,该字符串具有如下所示的动态列
[{"DId":0,"DData":[{"Date":"","C0":{"D":"National","Id":"National"},"C1":{"D":"National","Id":"National"},"C2":{"D":"National","Id":"National"}},{"Date":"1/2/2010","C0":{"D":0.74,"Id":1334337,"Dirty":"False"},"C1":{"D":0.6,"Id":1334597,"Dirty":"False"},"C2":{"D":1,"Id":1334857,"Dirty":"False"}}]}]
正如我强调的列(C*),它们是动态的,例如,我可以有如下JSON,其中我只有两列
[{"DId":0,"DData":[{"Date":"","C0":{"D":"National","Id":"National"},"C1":{"D":"National","Id":"National"}},{"Date":"1/2/2010","C0":{"D":0.74,"Id":1334337,"Dirty":"False"},"C1":{"D":0.6,"Id":1334597,"Dirty":"False"}}]}]
C0、C1、C2。。。。是动态的
我正在尝试构建一个通用模型来反序列化我的JSON字符串。现在我有我的模型如下
public class C0
{
public object D { get; set; }
public object Id { get; set; }
public string Dirty { get; set; }
}
public class C1
{
public object D { get; set; }
public object Id { get; set; }
public string Dirty { get; set; }
}
public class C2
{
public object D { get; set; }
public object Id { get; set; }
public string Dirty { get; set; }
}
public class DData
{
public string Date { get; set; }
public C0 C0 { get; set; }
public C1 C1 { get; set; }
public C2 C2 { get; set; }
}
public class Model
{
public int DId { get; set; }
public List<DData> DData { get; set; }
}
如上所述,分布数据可以具有动态列。任何帮助我都非常感激。非常感谢。
秘诀是保持反序列化JSON的最通用形式:
Dictionary<string, object> theData= new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(jsonString);
System.Collections.ArrayList dData= (System.Collections.ArrayList)theData["DData"];
foreach (Dictionary<string, object> data in dData)
{
string date = (string)data["Date"];
Dictionary<string, object> cZeroNode = (Dictionary<string, object>)data["C0"];
string d = (string)cZeroNode["D"];
string id = (string)cZeroNode["Id"];
}
对Deserialize()
的调用创建了一个Dictionary<string, object>
树,您可以随意遍历它。