这是我的 Json 字符串:
[
{
"Order": 1,
"IssueId": 83719,
"Journal": "HLRF",
"Identity": "HLRF, Vol.137, Iss.4, y.2024, February 2024",
"Web": "https://harvardlawreview.org/forum/issue/83719",
"Articles": [
{
"Link": "https://harvardlawreview.org/forum/article/1451533",
"Pdf": 3789188
},
{
"Link": "https://harvardlawreview.org/forum/article/1451561",
"Pdf": 3789306
},
{
"Link": "https://harvardlawreview.org/forum/article/1451574",
"Pdf": 3789358
}
]
}
]
我正在使用 Json.Net 和像这样的对象结构:
var issues = JsonConvert.DeserializeObject<List<Issue>>("___Json.String___");
public class Issue
{
public int Order { get; set; }
public int IssueId { get; set; }
public string Journal { get; set; }
public string Identity { get; set; }
public string Web { get; set; }
public List<Article> Articles { get; set; }
}
public class Article
{
public string Link { get; set; }
public int Pdf { get; set; }
}
在这里,我知道
Pdf
数字,例如3789306
。它位于第一期第二篇文章。
所以我想获取父问题的 id
IssueId
。在我们的示例中83719
。但我没能做到。
当您反序列化为
List<Issue>
时,通过 System.Linq 搜索包含 Pdf
的子级的父级将更容易实现,其值为 3789306。
对于
articleId
可能不存在的情况的处理,请使用.FirstOrDefault()
和空条件运算符(?.
)。
using System.Linq;
int articleId = 3789306;
int? issueId = issues.FirstOrDefault(x => x.Articles.Any(y => y.Pdf == articleId))
?.IssueId;