首页 > 解决方案 > 如何过滤和读取数组中的每个项目

问题描述

下面是我在服务总线队列中收到的示例 Json。在进行任何进一步处理之前,我想过滤掉它们包含 DocType 和 ProjectId 属性的每个项目。下面的数组包含三个项目,其中只有两个有 DocType 和 ProjectId,所以我想验证只得到这两个项目,我该怎么做?

我的消息:

    [
    {
        "Id": "Test1",
        "DocType": "Test",
        "Project": "Test1",
        "ProjectId": "tab12",
        "Tags": [],
        "Properties": {},
        "Categories": [],
        "Trigger": true,
        "Received": "2020-12-16T13:43:50.3001244Z"
    },
    {
        "Id": "test2",
        "DocType": "Test",
        "Project": "Test2",
        "ProjectId": "tab123",
        "Tags": [],
        "Properties": {},
        "Categories": [],
        "Trigger": true,
        "Received": "2020-12-18T13:43:50.3001244Z"
    },
    {
        "Id": "test3",
        "Project": "Test3",
        "ProjectId": "tab1232",
        "Tags": [],
        "Properties": {},
        "Categories": [],
        "Trigger": true,
        "Received": "2020-12-28T13:43:50.3001244Z"
    }
]

C#代码:

 public static void Run([ServiceBusTrigger("topicname", "subscriptionname", Connection = "AzureServiceBusString")] string mySbMsg, ExecutionContext context, ILogger log)
        {
            log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
           
            List<Document> lists = JsonConvert.DeserializeObject<List<Document>>(mySbMsg);
}

标签: c#

解决方案


另一种方法是使用反射。

只需对您的类型使用 C# 反射并检查该属性是否存在。

Obj.GetType().GetProperty(name)!=null

推荐阅读