杰森未定义的问题 修改后的脚本:注意:参考:

问题描述

我的json解析出现问题,当我尝试遍历json数据时,我一直无法定义。

这是示例Json代码,该代码不断返回未定义的内容

 [{"id":"5f99b552b2c25b37596871e3","value":{"number":"1"},"idCustomField":"5f998faf4bb46e574ac28514","idModel":"5f907f344b88092b1d0e03d1","modelType":"card"}]

我正在使用以下方法获取有效负载,然后对其进行解析:

        var response2 = UrlFetchApp.fetch(url + "cards/" + card.id + "/customFieldItems?"+ key_and_token);  
        customfielditems = JSON.parse(response2.getContentText()).actions;

当我尝试遍历对象时,得到的对象的值不确定。循环如下:

for (var m=0; m < customfielditems.length; m++) {

customfielditemid = customfielditems[m].value

}

请介意,我什至没有提供价值。我收到一条错误消息,指示未定义“ .length”。聚焦对象之后,对象本身(customfielditems)即使在解析后也未定义。

在我做错事情时会喜欢链接或建议。

解决方法

从脚本的URL,我认为您可能正在使用"Get Custom Field Items for a Card"。当看到“获取卡片的自定义字段项目”的正式文档时,响应值似乎为Array<CustomFieldItems>。样本响应值如下。

[
  {
    "id": "5abbe4b7ddc1b351ef961414","value": {
      "checked": "true"
    },"idCustomField": "5abbe4b7ddc1b351ef961414","idModel": "5abbe4b7ddc1b351ef961414","modelType": "card"
  }
]

从上述回答值中,我了解到您的response2.getContentText()是您问题中[{"id":"5f99b552b2c25b37596871e3","value":{"number":"1"},"idCustomField":"5f998faf4bb46e574ac28514","idModel":"5f907f344b88092b1d0e03d1","modelType":"card"}]的值。如果我的理解是正确的,则在这种情况下,customfielditems中的customfielditems = JSON.parse(response2.getContentText()).actions;undefined。我认为您的问题的原因是由于此。

当您要从响应值中检索value时,如何进行以下修改?

修改后的脚本:

var response2 = UrlFetchApp.fetch(url + "cards/" + card.id + "/customFieldItems?"+ key_and_token);
customfielditems = JSON.parse(response2.getContentText());

for (var m=0; m < customfielditems.length; m++) {
  customfielditemid = customfielditems[m].value;
}
  • 当您要检索1的{​​{1}}的值时,请按以下方式修改{"number":"1"}

    customfielditemid = customfielditems[m].value;

注意:

  • 在此修改后的脚本中,它假定您已经能够使用 customfielditemid = Object.values(customfielditems[m].value); // or Object.values(customfielditems[m].value)[0]; 使用API​​。请注意这一点。

参考: