Json 未定义的问题

Json undefined issue

我的 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"。看《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 = JSON.parse(response2.getContentText()).actions;customfielditems就是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;
}
  • 当要取回{"number":"1"}1的值时,请修改customfielditemid = customfielditems[m].value;如下。

      customfielditemid = Object.values(customfielditems[m].value); // or Object.values(customfielditems[m].value)[0];
    

注:

  • 在此修改后的脚本中,假设您已经能够使用 url + "cards/" + card.id + "/customFieldItems?"+ key_and_token 使用 API。请注意这一点。

参考: