Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用c查找JObject中是否存在JToken#_C#_Json_Json.net - Fatal编程技术网

C# 如何使用c查找JObject中是否存在JToken#

C# 如何使用c查找JObject中是否存在JToken#,c#,json,json.net,C#,Json,Json.net,我从thoird party服务接收JObject对象,该服务包含如下所示的JSON: { { "topic": "asd", "id": "b87a5db6-01b5-4cc0-8fa7-832382ca3431", "eventType": "update", "subject": "/asd/task", "eventTime": "12/18/2018 4:46:20 PM", "da

我从thoird party服务接收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"
    }
}
此作业对象可能有也可能没有以粗体突出显示的JToken

我需要看看传入的JObject中是否存在这样的jtoken

如果它们存在,那么我需要从中获取值。例如,在这里,存在提醒日期、开始日期和结束日期JTokens,因此我需要获取它们各自的值,在本例中为null


如果JObject中不存在这些jToken,那么我需要从其他源(如DB)获取值。

要获取startDate之类的属性,它将以字符串形式返回其值,如果找不到则返回null


欢迎来到StackOverflow。感谢您定义良好的输入和期望输出示例。因为这是一个问答网站,而不是一个代码编写服务,所以最好还包括一些您尝试过的代码,以及对它如何不按您希望的方式工作的描述。如果您根本不知道从哪里开始,我建议您阅读。这就是我要做的:eventGridEvent[“data”]。选择Token(“auditData”)[“startDate”!=null,其中eventGridEvent是我的作业对象。这是检查此JObject中是否存在startDate JToken的正确方法吗?我将使用
eventGridEvent.SelectToken(“data.auditData.startDate”)!=null
,因为如果没有
数据
审核数据
属性,这将更加优雅地处理问题。似乎是的副本,建议使用
SelectToken()
或在c#6.0或更高版本中使用null条件运算符。同意吗?谢谢@StriplingWarriorthanks@Ahmed Ghoniem
    string Text =
    @"{
    ""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 response = JObject.Parse(Text);
    string startDate = (string) response ["data"]["auditData"]["startDate"];