如何在.Net中打印SQS消息正文的内容

How to print contents of SQS message body in .Net

我一直在尝试在 .Net 中打印从下面的 sqs 消息正文创建的对象。

"Records": [
    {

        *****"body": "{\n    \"Records\": [\n        {\n            \"eventVersion\": \"2.1\",\n            \"eventSource\": \"aws:s3\",\n            \"awsRegion\": \"us-east-1\",\n            \"eventTime\": \"2020-02-18T23:35:07.83Z\",\n            \"eventName\": \"ObjectCreated:Put\",\n            \"userIdentity\": {\n                \"principalId\": \"AWS:AROAI32VQZJAYMFLW7AF6:i-000a08934cf25d02f\"\n            },\n            \"requestParameters\": {\n                \"sourceIPAddress\": \"54.205.64.40\"\n            },\n            \"responseElements\": {\n                \"x-amz-request-id\": \"0102C3F5984E4018\",\n                \"x-amz-id-2\": \"P0M/58sCuaZfOJVKPdkyqPcbiYNLOqmgvYtWXh/0n01rcUwaYchzHj4FEIsBiBYJpwhc1pNh7khhMgC29/DpaYEARa+k5C+L\"\n            },\n            \"s3\": {\n                \"s3SchemaVersion\": \"1.0\",\n                \"configurationId\": \"c88ecc67-0746-4172-97a6-9e45a455483d\",\n                \"bucket\": {\n                    \"name\": \"lbi-power-monitor-csvfiles-dev\",\n                    \"ownerIdentity\": {\n                        \"principalId\": \"ACJ7SDRW56IDB\"\n                    },\n                    \"arn\": \"arn:aws:s3:::lbi-power-monitor-csvfiles-dev\"\n                },\n                \"object\": {\n                    \"key\": \"Moderna+Therapeutics/2020/02/18/PowerMonitor-system-data-20200218-233511.csv\",\n                    \"size\": 77742,\n                    \"eTag\": \"768256930356a4958b299fa13406edc1\",\n                    \"sequencer\": \"005E4C74AFDC76715B\"\n                }\n            }\n        }\n    ]\n}",*****

要阅读邮件正文,您需要对其进行反序列化。该消息是一个 JSON 字符串。在 .Net 中,最常用的方法是使用 Newtonsoft 库。如果您知道要查找的元素,则可以创建一个 class(或一组 classes)以将其反序列化为该对象。如果您不想创建 classes,您可以使用 Linq 对象并使用这些对象在 JSON 中导航以查找您要查找的数据。

写出桶名的例子

var body = Newtonsoft.Json.Linq.JToken.Parse("{\n    \"Records\": [\n        {\n            \"eventVersion\": \"2.1\",\n            \"eventSource\": \"aws:s3\",\n            \"awsRegion\": \"us-east-1\",\n            \"eventTime\": \"2020-02-18T23:35:07.83Z\",\n            \"eventName\": \"ObjectCreated:Put\",\n            \"userIdentity\": {\n                \"principalId\": \"AWS:AROAI32VQZJAYMFLW7AF6:i-000a08934cf25d02f\"\n            },\n            \"requestParameters\": {\n                \"sourceIPAddress\": \"54.205.64.40\"\n            },\n            \"responseElements\": {\n                \"x-amz-request-id\": \"0102C3F5984E4018\",\n                \"x-amz-id-2\": \"P0M/58sCuaZfOJVKPdkyqPcbiYNLOqmgvYtWXh/0n01rcUwaYchzHj4FEIsBiBYJpwhc1pNh7khhMgC29/DpaYEARa+k5C+L\"\n            },\n            \"s3\": {\n                \"s3SchemaVersion\": \"1.0\",\n                \"configurationId\": \"c88ecc67-0746-4172-97a6-9e45a455483d\",\n                \"bucket\": {\n                    \"name\": \"lbi-power-monitor-csvfiles-dev\",\n                    \"ownerIdentity\": {\n                        \"principalId\": \"ACJ7SDRW56IDB\"\n                    },\n                    \"arn\": \"arn:aws:s3:::lbi-power-monitor-csvfiles-dev\"\n                },\n                \"object\": {\n                    \"key\": \"Moderna+Therapeutics/2020/02/18/PowerMonitor-system-data-20200218-233511.csv\",\n                    \"size\": 77742,\n                    \"eTag\": \"768256930356a4958b299fa13406edc1\",\n                    \"sequencer\": \"005E4C74AFDC76715B\"\n                }\n            }\n        }\n    ]\n}");

Console.WriteLine(body["Records"][0]["s3"]["bucket"]["name"]);