【问题标题】:Parsing JSON formatted Slack payload in Google Script在 Google Script 中解析 JSON 格式的 Slack 有效负载
【发布时间】:2016-12-07 21:48:57
【问题描述】:

我正在尝试更深入地挖掘嵌套的 Slack 有效负载,以获取我嵌入在原始消息中的一些“字段”。

我什至不确定这甚至是 JSON。Slack 否认他们甚至支持它。但我必须将它作为 JSON 处理?无论如何,也许有人可以阐明这一点。

无论如何..这是我深入研究有效负载的脚本:

function doPost(e) {
  var payload = e.parameter.payload;
  var json = JSON.parse(payload);
  var attached = json["original_message"].attachments;
  ...

var attached 是:

{
   color=7CD197, callback_id=123, 
   text=Invite *Hello* to this slack?, id=1, 
   fields=[Ljava.lang.Object;@710f54d9, 
   fallback=Something went wrong.. try again, 
   actions=[Ljava.lang.Object;@67e92a25
}

要访问fields 对象,我希望使用以下语法:

var field_value = attached.fields[0].value;

我认为这应该是正确的,因为我想检索fields 对象的第一个嵌套对象(可以有多个)。原始消息字段如下:

"fields": [
            {
                "title": "Name",
                "value": invitation_name,
                "short": true
            },
            {
                "title": "Email",
                "value": invitation_email,
                "short": true
            }
        ],

其中invitation_nameinvitation_email 是传递值。

因此,鉴于上述逻辑,我希望 var field_value = attached.fields[0].value; 返回 invitation_name.. 的传递值。但是我得到以下信息:

TypeError: Cannot read property "0" from undefined.

来自var payload = e.parameter.payload; 的原始传入有效负载确实包含fields 对象.. 但JSON.parse 将其转换为fields=[Ljava.lang.Object;@710f54d9,..

https://www.mkyong.com/javascript/how-to-access-json-object-in-javascript/

对如何深入到 json 文件提供了一个很好的概要,我已经习惯了很好的效果来获得我想要的一切.. 除了现在我无法在不生成 invalid 返回的情况下进一步挖掘..

【问题讨论】:

  • 请更具体地说明您要做什么。这应该是传出 webhook 消息的附件吗? (顺便说一句,这当然是 JSON,正如 documentation 上明确说明的那样

标签: json google-apps-script slack-api


【解决方案1】:

您的var attachments 是一个数组,因此要访问其中的fields[0].value,您需要一个索引。

试试var field_value = attached[0].fields[0].value;

或者更好:

var attached = json["original_message"].attachments[0]; var field_value = attached.fields[0].value;

【讨论】:

  • 是的,兄弟..这行得通..试图解决这个问题就像把你的大脑缠绕在一条割伤的蛇身上..
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2019-12-27
  • 2016-12-27
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多