Как напечатать содержимое тела сообщения SQS в. Net - PullRequest
0 голосов
/ 21 февраля 2020

Я пытался напечатать объект, созданный из тела сообщения sqs ниже. Net.

"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}",*****

1 Ответ

0 голосов
/ 21 февраля 2020

Чтобы прочитать текст сообщения, его необходимо десериализовать. Сообщение представляет собой строку JSON. В. Net наиболее распространенным способом сделать это является библиотека Newtonsoft . Если вы знаете элемент, который ищете, вы можете создать класс (или набор классов), чтобы десериализовать его в этот объект. Если вы не хотите создавать классы, вы можете использовать объекты 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"]);
...