C# 从JSON数组中提取少量值
我面临的问题是,对于我在JSON中要求的值,我得到了0 我最近问了一个问题,关于如何从来自API的JSON数组响应中获取特定值 现在,我有一个来自不同路由的新JSON响应,其中我想要一个值,它的名为EntityId,它在实体块中的位置请参阅代码了解更多详细信息,我想从这个响应中获取它,并将它们放在一个列表或数组中,因为它告诉我谁在D2L中提交了分配 更新-在收到用户的评论后,我使用JSON to C#工具创建了包含所有值的完整类,但仍然得到了0,0,0,0的值 现在我得到的是0,0,0,0的值,而不是实际值,如果可能的话,我想抓住实体上的整个块 JSONC# 从JSON数组中提取少量值,c#,asp.net,arrays,json,desire2learn,C#,Asp.net,Arrays,Json,Desire2learn,我面临的问题是,对于我在JSON中要求的值,我得到了0 我最近问了一个问题,关于如何从来自API的JSON数组响应中获取特定值 现在,我有一个来自不同路由的新JSON响应,其中我想要一个值,它的名为EntityId,它在实体块中的位置请参阅代码了解更多详细信息,我想从这个响应中获取它,并将它们放在一个列表或数组中,因为它告诉我谁在D2L中提交了分配 更新-在收到用户的评论后,我使用JSON to C#工具创建了包含所有值的完整类,但仍然得到了0,0,0,0的值 现在我得到的是0,0,0,0的值,
[
{
“实体”:{
“DisplayName”:“FullName”,
“实体ID”:123,
“EntityType”:“用户”,
“活动”:真
},
“地位”:1,
“反馈”:空,
“意见书”:[
{
“Id”:27,
“提交人”:{
“标识符”:“123”,
“显示名称”:“全名”
},
“提交日期”:“2019-08-01T15:25:04.130Z”,
“评论”:{
“文本”:“,
“Html”:”
},
“文件”:[
{
“IsRead”:错误,
“IsFlagged”:false,
“IsDeleted”:错误,
“文件ID”:1245,
“文件名”:“1.2.10.png”,
“尺寸”:144407
},
{
“IsRead”:错误,
“IsFlagged”:false,
“IsDeleted”:错误,
“文件ID”:292,
“文件名”:“1.3.8.png”,
“大小”:127869
}
]
}
],
“竣工日期”:“2019-08-01T15:25:04.130Z”
},
{
“实体”:{
“DisplayName”:“FullName”,
“实体ID”:123,
“EntityType”:“用户”,
“活动”:真
},
“地位”:1,
“反馈”:空,
“意见书”:[
{
“Id”:41,
“提交人”:{
“标识符”:“123”,
“显示名称”:“全名”
},
“提交日期”:“2019-08-03T03:31:43.807Z”,
“评论”:{
“文本”:“\nAlex”,
“Html”:“\nAlex”
},
“文件”:[
{
“IsRead”:错误,
“IsFlagged”:false,
“IsDeleted”:错误,
“文件ID”:313,
“文件名”:“捕获1.2.10 Questions.PNG”,
“尺寸”:97722
}
]
}
],
“竣工日期”:“2019-08-03T03:31:43.807Z”
}
]
课程:
public class Entity
{
public string DisplayName { get; set; }
public int EntityId { get; set; }
public string EntityType { get; set; }
public bool Active { get; set; }
}
public class SubmittedBy
{
public string Identifier { get; set; }
public string DisplayName { get; set; }
}
public class Comment
{
public string Text { get; set; }
public string Html { get; set; }
}
public class File
{
public bool IsRead { get; set; }
public bool IsFlagged { get; set; }
public bool IsDeleted { get; set; }
public int FileId { get; set; }
public string FileName { get; set; }
public int Size { get; set; }
}
public class Submission
{
public int Id { get; set; }
public SubmittedBy SubmittedBy { get; set; }
public DateTime SubmissionDate { get; set; }
public Comment Comment { get; set; }
public IList<File> Files { get; set; }
}
public class Example
{
public Entity Entity { get; set; }
public int Status { get; set; }
public object Feedback { get; set; }
public IList<Submission> Submissions { get; set; }
public DateTime CompletionDate { get; set; }
}
公共类实体
{
公共字符串DisplayName{get;set;}
public int EntityId{get;set;}
公共字符串EntityType{get;set;}
公共bool活动{get;set;}
}
公共类提交人
{
公共字符串标识符{get;set;}
公共字符串DisplayName{get;set;}
}
公开课评论
{
公共字符串文本{get;set;}
公共字符串Html{get;set;}
}
公共类文件
{
公共bool IsRead{get;set;}
public bool被标记为{get;set;}
公共布尔被删除{get;set;}
public int FileId{get;set;}
公共字符串文件名{get;set;}
公共整数大小{get;set;}
}
公开课提交
{
公共int Id{get;set;}
public SubmittedBy SubmittedBy{get;set;}
公共日期时间提交日期{get;set;}
公共注释注释{get;set;}
公共IList文件{get;set;}
}
公开课范例
{
公共实体{get;set;}
公共int状态{get;set;}
公共对象反馈{get;set;}
公共IList提交{get;set;}
公共日期时间完成日期{get;set;}
}
代码:
var request = new RestRequest(string.Format(Link));
request.Method = Method.GET;
authenticator.Authenticate(client, request);
var response = client.Execute(request);
var thisasa = JsonConvert.DeserializeObject<List<Example>>
(response.Content).Select(
o => o.Identifier).ToList();
var请求=新的重新请求(string.Format(Link));
request.Method=Method.GET;
身份验证(客户端,请求);
var response=client.Execute(请求);
var thisasa=JsonConvert.DeserializeObject
(response.Content)。选择(
o=>o.Identifier).ToList();
问题中显示的示例
数据模型已经可以用于成功地反序列化所显示的JSON。剩下的就是通过一个:
演示小提琴2
(另一方面,由于您的
示例
类对应于文档对象,为了清楚起见,您可能需要将您的类型重命名为EntityDropbox
)您的问题中显示的示例
数据模型已经可以用于成功地反序列化显示的JSON。剩下的就是通过一个:
演示小提琴2
(顺便说一句,由于您的
示例
类对应于文档对象,为了清楚起见,您可能需要将您的类型重命名为EntityDropbox
)您的反序列化代码似乎工作得很好,不确定您的问题出在哪里。但是.Select(o=>o.Identifier)
不会编译,您需要做的是.Select(o=>o.Entity.EntityId)
。演示:。这回答了你的问题吗?@dbc是的,这就是问题所在,非常感谢@dbc如果你发布一个答案,我将能够为你的答案评分,因此我认为你应该发布一个答案,以便我可以标记为已接受,为你的所有帮助评分是公平的你的反序列化代码似乎工作正常,不确定你的问题是什么。但是.Select(o=>o.Identifier)
不会编译,您需要做的是.Select(o=>o.Entity.EntityId)
。演示:。这回答了你的问题吗?@dbc是的,这就是问题所在,非常感谢@dbc如果你发布一个答案,我将能够给你的答案,所以我认为你应该发布一个答案,这样我可以标记为接受,这是公平的,给你所有的帮助信用
var request = new RestRequest(string.Format(Link));
request.Method = Method.GET;
authenticator.Authenticate(client, request);
var response = client.Execute(request);
var thisasa = JsonConvert.DeserializeObject<List<Example>>
(response.Content).Select(
o => o.Identifier).ToList();
var thisasa = JsonConvert.DeserializeObject<List<Example>>(response.Content)
.Select(o => o.Entity.EntityId)
.ToList();
public class Entity
{
public int EntityId { get; set; }
}
public class Example
{
public Entity Entity { get; set; }
}