使用 C# 控制台应用将反序列化 JSON 响应存储到 DataTable
Store Deserialize JSON response into DataTable using C# Console app
你好..!!!
我需要从文件 ("AllProjects.JSON") 中读取 JSON 响应,然后将 JSON 响应数据存储在数据 table 中。当通过 ProjectName(pName) 作为过滤器时,需要获取项目详细信息(如:Id、名称、模板)。我是 C# 的新手,试过下面的代码请帮助我完成下一部分。
非常感谢..!!!
AllProjects.JSON:
{
"name": "projects",
"totalRows": 25,
"rowData": [
{
"id": "100",
"name": "Project1",
"data": {
"creator_id": "336",
"create_time": "5/1/2020 5:21:24 AM",
"is_global": "False",
"last_publication": "5/1/2020 5:21:29 AM",
"active": "True",
"lnk_cnt": "0",
"templates": "5",
"owner": "Quepal"
}
},
{
"id": "101",
"name": "Project2",
"data": {
"creator_id": "336",
"create_time": "4/30/2020 4:01:22 AM",
"is_global": "False",
"last_publication": "4/30/2020 4:01:27 AM",
"active": "True",
"lnk_cnt": "0",
"templates": "5",
"owner": "Quepal"
}
}
]
}
C#控制台应用代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
namespace DataTable
{
class Program
{
public class Data
{
public string creator_id { get; set; }
public DateTime create_time { get; set; }
public string is_global { get; set; }
public DateTime last_publication { get; set; }
public string active { get; set; }
public string lnk_cnt { get; set; }
public string templates { get; set; }
public string owner { get; set; }
}
public class RowData
{
public string id { get; set; }
public string name { get; set; }
public Data data { get; set; }
}
public class Application
{
public string name { get; set; }
public int totalRows { get; set; }
public IList<RowData> rowData { get; set; }
}
static void Main(string[] args)
{
string pName = "Project1";
var responseBody = File.ReadAllText("D:\EnrichInput\AllProjects.JSON");
var allProjs = JsonConvert.DeserializeObject<Application>(responseBody);
}
}
}
您可以使用 system.linq 过滤您的数据,如下所示。
var proj = allProjs.rowData.FirstOrDefault(x => x.name == "projname");
if(proj == null) return;
var id = proj.id;
var name = proj.name;
var data_templates = proj.data.templates;
你好..!!!
我需要从文件 ("AllProjects.JSON") 中读取 JSON 响应,然后将 JSON 响应数据存储在数据 table 中。当通过 ProjectName(pName) 作为过滤器时,需要获取项目详细信息(如:Id、名称、模板)。我是 C# 的新手,试过下面的代码请帮助我完成下一部分。 非常感谢..!!!
AllProjects.JSON:
{
"name": "projects",
"totalRows": 25,
"rowData": [
{
"id": "100",
"name": "Project1",
"data": {
"creator_id": "336",
"create_time": "5/1/2020 5:21:24 AM",
"is_global": "False",
"last_publication": "5/1/2020 5:21:29 AM",
"active": "True",
"lnk_cnt": "0",
"templates": "5",
"owner": "Quepal"
}
},
{
"id": "101",
"name": "Project2",
"data": {
"creator_id": "336",
"create_time": "4/30/2020 4:01:22 AM",
"is_global": "False",
"last_publication": "4/30/2020 4:01:27 AM",
"active": "True",
"lnk_cnt": "0",
"templates": "5",
"owner": "Quepal"
}
}
]
}
C#控制台应用代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
namespace DataTable
{
class Program
{
public class Data
{
public string creator_id { get; set; }
public DateTime create_time { get; set; }
public string is_global { get; set; }
public DateTime last_publication { get; set; }
public string active { get; set; }
public string lnk_cnt { get; set; }
public string templates { get; set; }
public string owner { get; set; }
}
public class RowData
{
public string id { get; set; }
public string name { get; set; }
public Data data { get; set; }
}
public class Application
{
public string name { get; set; }
public int totalRows { get; set; }
public IList<RowData> rowData { get; set; }
}
static void Main(string[] args)
{
string pName = "Project1";
var responseBody = File.ReadAllText("D:\EnrichInput\AllProjects.JSON");
var allProjs = JsonConvert.DeserializeObject<Application>(responseBody);
}
}
}
您可以使用 system.linq 过滤您的数据,如下所示。
var proj = allProjs.rowData.FirstOrDefault(x => x.name == "projname");
if(proj == null) return;
var id = proj.id;
var name = proj.name;
var data_templates = proj.data.templates;