我试图深入挖掘嵌套的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_name
和invitation_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}}返回..
答案 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;