我是JSON的新人,如果我不知道,我会学习,请原谅我。我有以下JSON:
"data": [
{
"id": 373644788,
"description": "something ",
"start": "2016-04-28T02:23:01+02:00",
"end": "2016-04-28T02:23:12+02:00",
"updated": "2016-04-28T02:24:05+02:00",
"dur": 11000,
"user": "John Smith",
"project": "First Project",
},
{
"id": 373635064,
"description": "None",
"start": "2016-04-28T01:43:42+02:00",
"end": "2016-04-28T01:44:06+02:00",
"updated": "2016-04-28T01:44:21+02:00",
"dur": 24000,
"user": "Drake",
"project": "Second Project",
}]
这些JSON
对象中的每一个都是一个单独的项目,我需要从每个对象中提取数据(ID, Name, Start, End
)并将它们放入我的C# Class
和它们应该为每个项目单独存储,因为它们稍后将导出到与这些属性具有相同列的数据库中。
我创建了Class Definitions
:
public class Definitions
{
public int id { get; }
public string user { get; }
public double dur { get; }
public string project { get; }
public override string ToString()
{
return string.Format("ID: {0}, Name: {1}, Duration: {2}, Projekt: {3}", this.id, this.user, this.dur, this.project);
}
问题在于,我无法访问JSON
内的属性。如果我尝试Deserialize
,我的输出中的所有属性总是0
,好像我无法访问这些属性。
第二个问题是我如何存储它们?我的意思是当它们被导出到数据库时,它们中的每一个都应该自动放入单独的行中,每行包含(ID,Nama,Start,End
)列。
谢谢。
Deserilize:
String jsonString = File.ReadAllText(@"D:\Json.json");
Definitions def = JsonConvert.DeserializeObject<Definitions>(jsonString);
Console.WriteLine(def);
答案 0 :(得分:3)
由于您的JSON具有名为data
的属性,并且此属性是包含许多对象的数组。你需要的是从json的根目录反序列化,即:从data属性。
您已经使用与JSON相同的属性编写了类,这是正确的,您现在想要的是为data
属性编写另一个类。
public class DefinitionRoot
{
public List<Definitions> data {get; set;}
}
现在我们有一个名为data
的属性的类,它包含Definitions
的列表。
现在我们可以反序列化如下。
var allDefinitions = JsonConvert.DeserializeObject<DefinitionsRoot>(yourJsonData);
完成此步骤后,您的allDefinitons.data
将包含项目详细信息列表。
希望这是有帮助的