如何在 c# 中使用 restsharper 存储每个 JSON 数据?
How to store each JSON data with restsharper in c#?
我需要从 JSON 响应中获取值,我已尝试执行以下操作,但消息框在 Project
class.[=16= 中显示为空]
我已经尝试 Google 我的问题(还有 restsharp 教程),但直到现在我都无法解决我遇到的问题。我在网上到处都得到了线索,这就是我在过去几天里得到的信息。
我期望的结果是 API 中的每个值都进入变量,然后我可以获取每个值。我不想要普通的 JSON 内容。
Api Class
private async void Submit_Button_Click(object sender, RoutedEventArgs e)
{
var client = new RestClient("http://apage.com/");
var request = new RestRequest("api/project");
request.Method = Method.GET;
request.AddHeader("Accept", "application/json");
client.AddDefaultHeader("Authorization",
string.Format("Bearer {0}", "token goes here"));
var response = client.Execute(request);
var deserialize = new JsonDeserializer();
Project output = deserialize.Deserialize<Project>(response);
Project project = new Project();
project.check();
}
项目Class
class Project
{
public int Id { get; set; }
public string Title { get; set; }
public string Slug { get; set; }
public string Description { get; set; }
public string Deadline { get; set; }
public int User_id { get; set; }
public string Created_at { get; set; }
public string Updated_at { get; set; }
public void check()
{
MessageBox.Show(Title);
}
}
JSON代码
{
"projects": [
{
"id": 29,
"title": "a_project",
"slug": "a_project",
"description": "f",
"deadline": "2020-04-08 00:00:00",
"user_id": 19,
"created_at": "2020-02-11 16:59:45",
"updated_at": "2020-02-11 16:59:45"
}
]
}
Github link: https://github.com/s1129092/n212/blob/master/WpfApp1/MainWindow.xaml.cs
您似乎正在将一个包含 Project
对象数组的 属性 对象反序列化为 Project
class 对象。您的 JSON 示例显示根对象的 属性 projects
包含一个对象数组,因此您需要在 class 设计中匹配它以使反序列化隐式工作:
class ProjectList
{
public Project[] Projects { get; set; }
}
然后将你的响应反序列化为新的 ProjectList
class:
ProjectList output = deserialize.Deserialize<ProjectList>(response);
然后您可以遍历 output.Projects
数组以找到您的项目对象。
您的 Submit_Button_Click
方法现在可以像这样工作:
private async void Submit_Button_Click(object sender, RoutedEventArgs e)
{
var client = new RestClient("http://apage.com/");
var request = new RestRequest("api/project");
request.Method = Method.GET;
request.AddHeader("Accept", "application/json");
client.AddDefaultHeader("Authorization",
string.Format("Bearer {0}", "token goes here"));
var response = client.Execute(request);
var deserialize = new JsonDeserializer();
ProjectList output = deserialize.Deserialize<ProjectList>(response);
Project firstProjectInResponse = output.Projects[0];
firstProjectInResponse.check();
}
假设你有这样的class:
public class ProjectsModel
{
public List<Project> Projects { get; set; }
}
您可以使用以下代码获取响应数据:
var response = client.Execute<ProjectsModel>(request).Data;
var projects = response.Projects;
然后例如:
foreach(Project p in projects)
{
MessageBox.Show(p.Title);
}
我需要从 JSON 响应中获取值,我已尝试执行以下操作,但消息框在 Project
class.[=16= 中显示为空]
我已经尝试 Google 我的问题(还有 restsharp 教程),但直到现在我都无法解决我遇到的问题。我在网上到处都得到了线索,这就是我在过去几天里得到的信息。
我期望的结果是 API 中的每个值都进入变量,然后我可以获取每个值。我不想要普通的 JSON 内容。
Api Class
private async void Submit_Button_Click(object sender, RoutedEventArgs e)
{
var client = new RestClient("http://apage.com/");
var request = new RestRequest("api/project");
request.Method = Method.GET;
request.AddHeader("Accept", "application/json");
client.AddDefaultHeader("Authorization",
string.Format("Bearer {0}", "token goes here"));
var response = client.Execute(request);
var deserialize = new JsonDeserializer();
Project output = deserialize.Deserialize<Project>(response);
Project project = new Project();
project.check();
}
项目Class
class Project
{
public int Id { get; set; }
public string Title { get; set; }
public string Slug { get; set; }
public string Description { get; set; }
public string Deadline { get; set; }
public int User_id { get; set; }
public string Created_at { get; set; }
public string Updated_at { get; set; }
public void check()
{
MessageBox.Show(Title);
}
}
JSON代码
{
"projects": [
{
"id": 29,
"title": "a_project",
"slug": "a_project",
"description": "f",
"deadline": "2020-04-08 00:00:00",
"user_id": 19,
"created_at": "2020-02-11 16:59:45",
"updated_at": "2020-02-11 16:59:45"
}
]
}
Github link: https://github.com/s1129092/n212/blob/master/WpfApp1/MainWindow.xaml.cs
您似乎正在将一个包含 Project
对象数组的 属性 对象反序列化为 Project
class 对象。您的 JSON 示例显示根对象的 属性 projects
包含一个对象数组,因此您需要在 class 设计中匹配它以使反序列化隐式工作:
class ProjectList
{
public Project[] Projects { get; set; }
}
然后将你的响应反序列化为新的 ProjectList
class:
ProjectList output = deserialize.Deserialize<ProjectList>(response);
然后您可以遍历 output.Projects
数组以找到您的项目对象。
您的 Submit_Button_Click
方法现在可以像这样工作:
private async void Submit_Button_Click(object sender, RoutedEventArgs e)
{
var client = new RestClient("http://apage.com/");
var request = new RestRequest("api/project");
request.Method = Method.GET;
request.AddHeader("Accept", "application/json");
client.AddDefaultHeader("Authorization",
string.Format("Bearer {0}", "token goes here"));
var response = client.Execute(request);
var deserialize = new JsonDeserializer();
ProjectList output = deserialize.Deserialize<ProjectList>(response);
Project firstProjectInResponse = output.Projects[0];
firstProjectInResponse.check();
}
假设你有这样的class:
public class ProjectsModel
{
public List<Project> Projects { get; set; }
}
您可以使用以下代码获取响应数据:
var response = client.Execute<ProjectsModel>(request).Data;
var projects = response.Projects;
然后例如:
foreach(Project p in projects)
{
MessageBox.Show(p.Title);
}