在Google Script中解析JSON格式的Slack有效负载

时间:2016-12-07 21:48:58

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

我试图深入挖掘嵌套的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文件的一个很好的纲要,并且我已经习惯了很好的效果来获得我想要的一切......除了现在我无法进一步挖掘而不生成{{ 1}}返回..

1 个答案:

答案 0 :(得分: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;