【发布时间】:2018-12-19 01:49:27
【问题描述】:
我从第三方服务接收到一个 JObject 对象,其中包含如下所示的 JSON:
{
{
"topic": "asd",
"id": "b87a5db6-01b5-4cc0-8fa7-832382ca3431",
"eventType": "update",
"subject": "/asd/task",
"eventTime": "12/18/2018 4:46:20 PM",
"data": {
"auditId": "-9223372036854771584",
"contextData": "{}",
"eventType": null,
"auditData": {
"taskId": "22BC1515-39DF-4124-89EB-AD1468572F20",
"user": "asd@ul.com",
**"reminderDate": null,
"startDate": null,
"dueDate": null,**
"taskStatusName": "NotScheduled"
}
},
"dataVersion": "",
"metadataVersion": "1"
}
}
这个 JObject 可能有也可能没有以粗体突出显示的 JToken。
我需要查看传入的 JObject 中是否存在此类 JToken。
如果它们存在,那么我需要从它们中获取值。例如这里提醒日期、开始日期和到期日期 JToken 存在,所以我需要获取它们各自的值,在这个例子中是空的。
如果这些 Jtoken 不存在于 JObject 中,那么我需要从其他来源(如 DB)获取值。
【问题讨论】:
-
欢迎来到 StackOverflow。感谢您提供定义明确的输入和所需输出示例。由于这是一个问答网站,而不是一个代码编写服务,因此最好还包括一些您尝试过的代码,以及它如何无法按照您想要的方式工作的描述。如果您根本不知道从哪里开始,我建议您阅读this。
-
这就是我想要做的: eventGridEvent["data"].SelectToken("auditData")["startDate"] != null 其中 eventGridEvent 是我的 JObject。这是检查此 JObject 中是否存在 startDate JToken 的正确方法吗?
-
我会使用
eventGridEvent.SelectToken("data.auditData.startDate") != null,因为如果没有data或auditData属性,它会更优雅地处理事情。 -
似乎是Json.NET get nested jToken value 的副本,它建议使用
SelectToken(),或者在c# 6.0 或更高版本中,使用null 条件运算符。同意吗? -
感谢@StriplingWarrior