关键词:
【中文标题】如何正确接收 Pubsub JSON 数据?【英文标题】:How to correctly receive Pubsub JSON data? 【发布时间】:2021-11-11 06:06:00 【问题描述】:我有一个带有云功能的 GCP 管道设置,可以接收 PubSub 消息。问题是每次我向云函数发布消息(一个 json 字符串)时,收到的消息与预期的有所不同。以下是我的代码:
import base64
def myfunc(event, context):
#receive pusub data
if 'data' in event:
payload = base64.b64decode(event['data']).decode('utf-8')
else:
payload = 'No Data'
payloadLocal ="considerIp":False,"wifiAccessPoints":[
"macAddress":"44:48:c1:a6:f3:d0",
"signalStrength":-54,
"signalToNoiseRatio":0,
"channel":11,
"age":0,
"macAddress":"9c:1c:12:b0:45:f1",
"signalStrength":-43,
"signalToNoiseRatio":0,
"channel":11,
"age":0,
"macAddress":"20:a6:cd:33:6c:f4",
"signalStrength":-32,
"signalToNoiseRatio":0,
"channel":11,
"age":0]
#Compare the received payload from pubsub with the local payload
#I expect to the same payload as payloadlocal
if payloadLocal == payload:
print("Payload same")
else:
print("Payload different")
我使用 pubsub 发布的消息是:
"considerIp":False,"wifiAccessPoints":[
"macAddress":"44:48:c1:a6:f3:d0",
"signalStrength":-54,
"signalToNoiseRatio":0,
"channel":11,
"age":0,
"macAddress":"9c:1c:12:b0:45:f1",
"signalStrength":-43,
"signalToNoiseRatio":0,
"channel":11,
"age":0,
"macAddress":"20:a6:cd:33:6c:f4",
"signalStrength":-32,
"signalToNoiseRatio":0,
"channel":11,
"age":0]
但是当我将 payloadlocal 与从 pubsub 消息接收到的有效负载进行比较时,它是不同的。我缺少一些愚蠢的东西。请任何人指出它。谢谢
编辑: 经过多次尝试,我找到了解决方案:
payload = base64.b64decode(event['data'])
dict_str = payload.decode("UTF-8")
payload = ast.literal_eval(dict_str)
我确信有更好的解决方案,但这对我有用。
【问题讨论】:
【参考方案1】:您正在将有效负载作为字符串加载并检查它是否等于字典。
以这种方式加载您的消息
payload = json.loads(base64.b64decode(event['data']).decode('utf-8'))
json.loads
转换字典中的字符串,如果它是一个有效的字典。
【讨论】:
感谢您的回复。但我现在收到以下错误“在 raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 15 (char 14)" 编辑您的问题并打印事件内容['data']如何将 JSON 数据发布到 PubSub,然后推送到 BigQuery?
】如何将JSON数据发布到PubSub,然后推送到BigQuery?【英文标题】:HowtopublishJSONdataintoPubSubandthenpushtoBigQuery?【发布时间】:2021-07-1912:12:17【问题描述】:我正在获取JSON格式的twitter数据,并且我想将该数据(相同的JSON格式)推送... 查看详情
如何在 Pubsub 上正确使用 nack?
】如何在Pubsub上正确使用nack?【英文标题】:HowtousenackonPubsubproperly?【发布时间】:2021-11-0107:52:18【问题描述】:我正在从Pubsub中的某个主题收集消息。主要思想是,对于我收到的每条消息都做一些逻辑(在数据库中插入一些东... 查看详情
具有 CustomAttributes 的 PubSub - 未调用接收器函数,但出现 json 解析异常
】具有CustomAttributes的PubSub-未调用接收器函数,但出现json解析异常【英文标题】:PubSubwithCustomAttributes-Receiverfunctionisnotinvokedbutajsonparseexceptioniscomingup【发布时间】:2021-01-0304:36:55【问题描述】:GoogleCloud和PubSub服务。我在下面的... 查看详情
微服务和 PubSub:如何确保服务使用正确的事件
】微服务和PubSub:如何确保服务使用正确的事件【英文标题】:MicroservicesandPubSub:howtomakesureaserviceconsumestherightevents【发布时间】:2021-06-2508:13:42【问题描述】:我有一个应用程序的微服务架构。我有一个服务S1可以获取数据并将... 查看详情
如何在 pubsub 节点上发送/接收自定义项目有效负载
】如何在pubsub节点上发送/接收自定义项目有效负载【英文标题】:Howtosend/receivecustomizeitempayloadonpubsubnode【发布时间】:2013-11-2511:03:43【问题描述】:如何使用有效负载在pubsub节点上发送/接收自定义项目,我使用的是qsmacklib。这... 查看详情
如何将 pubsub 日志接收器创建到不同的谷歌云项目/组织?
】如何将pubsub日志接收器创建到不同的谷歌云项目/组织?【英文标题】:HowcanIcreateapubsublogsinktoadifferentgooglecloudproject/org?【发布时间】:2018-06-1413:38:57【问题描述】:我想定义从一个项目到另一个项目的pubsub日志导出接收器的步... 查看详情
如何编写云函数来接收、解析和发布 PubSub 消息?
】如何编写云函数来接收、解析和发布PubSub消息?【英文标题】:HowdoIwriteaCloudFunctiontoreceive,parse,andpublishPubSubmessages?【发布时间】:2019-05-3018:28:24【问题描述】:这可以被视为thisthread的后续行动,但我需要更多帮助来推动事情... 查看详情
Google 表格未从 Woocommerce Webhook 正确接收 json 数据
】Google表格未从WoocommerceWebhook正确接收json数据【英文标题】:GoogleSheetsnotreceivingjsondataproperlyfromWoocommerceWebhook【发布时间】:2021-08-2623:35:07【问题描述】:希望你们今天过得愉快。我在我的woocommerce中设置了一个webhook,用于将JSO... 查看详情
JSON 数据作为 PubSub 的消息
】JSON数据作为PubSub的消息【英文标题】:JSONdataasmessageforPubSub【发布时间】:2021-01-2309:36:30【问题描述】:我根据谷歌“将消息发布到主题”指南编写了以下代码:import("context""fmt""io""cloud.google.com/go/pubsub")funcpublishMessage(wio.Writer,... 查看详情
Swift 中的复杂 JSON。如何正确获取数据。不同的结构
】Swift中的复杂JSON。如何正确获取数据。不同的结构【英文标题】:ComplexJSONinSwift.Howtogetthedatacorrectly.Differentstructures【发布时间】:2021-11-0509:12:04【问题描述】:遇到一个难题,接收数据时不知道如何将数据分解成一个数组。负... 查看详情
数据流:从 Pubsub RuntimeException 导出到 Bigquery
...b传递到bigquery。但是它工作了一秒钟,这意味着一些条目正确地通过了bigquery 查看详情
后端如何接受json对象数据如何设置表头
参考技术A一般情况下,后端接收JSON对象数据应该设置表头为:Content-Type:application/json这样,后端就能够正确识别请求携带的JSON对象,并能正确解析其中的数据。 查看详情
Pubsub API Explorer:返回的消息数据不正确
】PubsubAPIExplorer:返回的消息数据不正确【英文标题】:PubsubAPIExplorer:Incorrectmessagedatareturned【发布时间】:2019-01-2911:46:27【问题描述】:我正在学习PubSubAPI。我向主题发布了几条消息,当我使用APIExplorer进行订阅者拉动时Method:pro... 查看详情
将数据表转换为 JSON 并逐行发布到 PubSub
】将数据表转换为JSON并逐行发布到PubSub【英文标题】:ConvertdatatabletoJSONandpublishtoPubSubrowbyrow【发布时间】:2020-03-0820:02:50【问题描述】:我的流程是从SQLServer数据库中获取数据(我正在使用数据表),然后将其发布到PubSub(每... 查看详情
如何正确返回一个函数以使用 JSON 进行措辞?
】如何正确返回一个函数以使用JSON进行措辞?【英文标题】:HowcanIreturncorrectlyafunctionforaphrasingwithJSON?【发布时间】:2018-10-2116:28:36【问题描述】:最近我用CityBikes的API启动了一个项目,可以实时获取全球不同城市的共享单车站... 查看详情
我们可以使用单个 Google Cloud Dataflow 将来自多个 Pubsub(源)的数据写入多个 GCS(接收器)吗?
...oogleCloudDataflow将来自多个Pubsub(源)的数据写入多个GCS(接收器)吗?【英文标题】:CanwewritedatafrommultiplePubsub(source)tomultipleGCS(sink)usingasingleGoogleCloudDataflow?【发布时间】:2020-12-2722:48:15【问题描述】:我有3个不同的Pubsub(源)... 查看详情
如何以json格式显示数据?
】如何以json格式显示数据?【英文标题】:howtodisplaydatainjsonformat?【发布时间】:2017-08-2903:58:49【问题描述】:嘿,实际上我是node和angularjs的新手,我正在node和angularjs上做一个项目json格式的数据,但该数据不是正确的json格式... 查看详情
如何在 WebAPI 后端 C# 上接收 JSON 数据?
】如何在WebAPI后端C#上接收JSON数据?【英文标题】:HowtoreceiveJSONdataonWebAPIbackendC#?【发布时间】:2015-09-1010:13:35【问题描述】:如何在C#中的WebAPI后端接收JSON数据?我的JavaScript前端发送了以下JSON。"User_Id":1,"TotalPrice":35,"DeliveryAddr... 查看详情