c# - 如何过滤和读取数组中的每个项目
问题描述
下面是我在服务总线队列中收到的示例 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# 反射并检查该属性是否存在。
Obj.GetType().GetProperty(name)!=null
推荐阅读
- c - 比较各种 pthread 构造的性能
- gstreamer - Gstreamer:如何更改 RTSP 端口?
- c# - 为什么当数字中有逗号时文本框总是返回null?
- ios - 使用金属间接命令缓冲区时出错:“片段着色器不能与间接命令缓冲区一起使用”
- php - ApnsPHP:utf-8 和推送时的“内部错误”?
- docker - 如何在不关闭服务的情况下更新数据库?
- reactjs - redux 操作不调用 reducer
- javascript - npm - EPERM mkdir:Windows 上不允许操作
- javascript - 使标签在较小的屏幕上响应
- exoplayer2.x - android.media.MediaCodec$CodecException: 初始化 OMX.qcom.video.decoder.avc 失败,错误 0xfffffff4