Windows环境Ruby on Rails中如何从FCM响应提取body属性值
如何从FCM推送响应中提取body属性的值?
嘿,作为Ruby on Rails新手,我完全懂你想快速从FCM响应里拿到目标值的需求!咱们直接来搞定这个事儿~
首先,你调用fcm.send()得到的response是一个Ruby哈希(FCM gem返回的结果默认就是哈希格式),你要的body属性嵌套在data字段下面,分两种情况处理:
情况1:只需要原始的JSON字符串格式的body值
如果你只是要那个包含multicast_id、success等信息的JSON字符串,直接通过哈希键取值就行:
# 先获取FCM响应 response = fcm.send([device_token], options) # 提取data中的body值(注意如果你的响应是字符串键,就用response["data"]["body"]) target_body = response[:data][:body]
这时候target_body就是你要的那个body属性的值啦。
情况2:需要解析body里的具体字段
要是你还想从这个JSON字符串里拿到具体的字段(比如multicast_id或者成功推送的数量success),那得把JSON字符串转换成Ruby哈希来操作:
# Rails默认已经包含JSON库,不需要额外安装 require 'json' # 先拿到原始的body字符串 body_str = response[:data][:body] # 把JSON字符串解析成Ruby哈希 body_hash = JSON.parse(body_str) # 现在就可以直接提取具体字段了 multicast_id = body_hash["multicast_id"] success_count = body_hash["success"] message_id = body_hash["results"][0]["message_id"]
你可以用puts打印结果来验证:
puts target_body # 打印原始JSON字符串 puts success_count # 打印成功推送的数量
内容的提问来源于stack exchange,提问作者Pinki
相关产品推荐
相关产品推荐

