当前位置: 首页 > 知识库问答 >
问题:

如何将对象传递给amazon SNS

单展
2023-03-14

我在示例中看到如何将消息字符串传递给亚马逊 sns sdk 的发布方法。但是,是否有如何将自定义对象作为消息传递的示例?我尝试将“消息结构”设置为“json”,但随后我得到无效参数:无效参数:消息结构 - JSON消息正文中没有默认条目错误。我应该将对象值传递到参数中的哪个位置?

有什么例子吗?

    var params = {
        Message: JSON.stringify(item),
        MessageStructure: 'json',
        TopicArn: topic
        //MessageAttributes: item
    };

    return sns.publishAsync(params);

共有3个答案

江志业
2023-03-14

Jackson 2非常支持将对象转换为JSON String,反之亦然。

Cat c = new Cat();
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(c);

对象

Cat obj = mapper.readValue(s,Cat.class);
皇甫心思
2023-03-14

示例如下所示:https://docs.aws.amazon.com/sns/latest/api/API_Publish.html#API_Publish_Example_2

消息的 JSON 格式如下:

{
    "default": "A message.",
    "email": "A message for email.",
    "email-json": "A message for email (JSON).",
    "http": "A message for HTTP.",
    "https": "A message for HTTPS.",
    "sqs": "A message for Amazon SQS." 
} 

所以,假设你想传递的是一个对象,对我来说是这样的:

const messageObjToSend = {
    ...
}

const params = {
    Message: JSON.stringify({
        default: JSON.stringify( messageObjToSend )
    }),
    MessageStructure: 'json',
    TopicArn: 'arn:aws:sns...'
}
缪晋
2023-03-14

SDK不支持将自定义对象作为消息传递——消息始终是字符串。当然,您可以将字符串设置为对象的序列化版本。

message structure:“JSON”有不同的用途——当您想要将不同的字符串传递给不同的订阅类型时。在这种情况下,您使消息成为具有AWS定义的结构的序列化json对象,其中每个元素都定义了要发送给特定订阅类型(email、sqs等)的消息。即使在这种情况下,消息本身也只是字符串。

消息属性是添加到消息中的参数,用于支持特定的订阅类型。例如,如果您使用 SNS 与 Apple 的 IOS 通知服务通信,则可能必须提供其他消息参数或身份验证密钥 - 消息属性提供了执行此操作的机制。本 AWS 文档中对此进行了介绍。

 类似资料:
  • 我正在使用GraphQL查询一个对象,该对象将由大约15个不同的REST调用组成。这是我的根查询,我在其中传入查询的ID。这对于正确解析的主要student对象非常有效。但是,我需要弄清楚如何将ID传递给地址解析程序。我尝试将args添加到address对象,但出现了一个错误,表明args没有从Student对象传递下来。所以我的问题是:如何将客户机查询中的参数传递给GraphQL服务器中的子对象

  • 问题内容: 我在php中有对象,每个对象代表一个“项目”以及与之相关的所有信息。 当用户浏览页面时,这些对象应传递给javascript。理想情况下,镜像相同的结构,因此我可以使用Raphael在我的网站上将每个项目及其信息显示为单独的形状。 但是,如何将对象从php转换为javascript? 问题答案: 您可以将PHP对象转换为数组,然后使用JSON函数对其进行编码。之后,从JavaScrip

  • 我的RestController中有如下API方法 类如下所示。 在postman中,我传递了一个JSON字符串,如 我得到一个错误说 2021-08-16 18:25:53.953警告4164---[io-8080-exec-10]. w. s. m. s.DefaultHandlerExceptionResolver:已解决[org.springframework.http.converter

  • 问题内容: 这里有角的新手。我试图找出将对象传递给指令时出了什么问题。 这是我的指令: 这是我调用指令的模板: 是一组对象。 当我运行此,日志,而日志罚款的范围,甚至有一个与所有的数据,我找孩子。 我不确定我在这里做错了什么,因为这种确切的方法以前对我有用。 编辑: 我已经用所有必需的代码创建了一个插件:http ://plnkr.co/edit/uJCxrG 如您所见,该作用域在范围中可用,但我

  • 问题内容: 我正在尝试使用Luaj + Java构建控制器。我有以下java类 以及控制器的以下lua脚本: 理想情况下,我想定义一个控制器(用lua编写),在其中我将保留程序的所有逻辑,并且我希望将该控制器的API公开给我的Java代码。我正在尝试使用以下方法: 我无法将对象传递给LuaValue。如何将Java对象传递给lua脚本? PS:通常,在使用Java和嵌入式脚本时,人们会将功能捆绑在

  • 问题内容: 这是我的基本功能: 此功能能够连接并在我的数据库上执行查询… 我想创建相同的功能,但更通用。…前一个仅用于一个表(),新表必须能够接受查询的参数作为输入,以及将在其中执行查询的类类型。这将允许我仅使用一行来执行查询。 应该是这样的: 您发现我不知道如何“通用”代码… 我希望已经清楚了… PS 应该是DB()中表的类的代表。 谢谢。 问题答案: 如果您打算返回结果集,请使用: