2016-12-07 33 views
0

我試圖深入挖掘嵌套的Slack有效負載,以獲取嵌入在原始消息中的某些「字段」。在Google腳本中解析JSON格式的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; 

我相信這應該是正確的,因爲我wa nt來檢索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返回..

+0

請更具體的正是你正在嘗試做的。這應該是一個消息傳出webhook附件? (順便說一句,這當然是JSON,如[文檔](https://api.slack.com/incoming-webhooks)上清楚說明的 –

回答

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;

+0

是的兄弟..工程..試圖讓你的頭繞着這個就像包裝你的大腦周圍的切割蛇.. – Jamie