如何在.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"]);
我一直在尝试在 .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"]);