【问题标题】:Json undefined issueJson未定义问题
【发布时间】:2021-02-24 04:34:36
【问题描述】:

我的 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)即使在解析后也是未定义的。

希望提供有关我做错了什么的链接或建议。

【问题讨论】:

  • 通过从 API 中猜测您的响应值,我建议修改点作为答案。你能确认一下吗?如果我误解了您的问题,我深表歉意。
  • 能否请您参考您要获取的网址,并提供相应的参考文档?

标签: google-apps-script trello


【解决方案1】:

从您脚本的 URL 中,我认为您可能正在使用 "Get Custom Field Items for a Card"。当看到“Get Custom Field Items for a Card”的官方文档时,似乎响应值为Array&lt;CustomFieldItems&gt;。样本响应值如下。

[
  {
    "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;customfielditemsundefined。我认为您的问题的原因是由于这个。

当你想从响应值中检索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​​。请注意这一点。

参考:

【讨论】:

  • 在 JSON.parse 工作后删除 .action 并且它工作得很好,非常感谢您的帮助。
  • @Maxamis4 感谢您的回复。很高兴您的问题得到解决。
猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 2019-02-24
  • 2019-09-21
  • 1970-01-01
相关资源
最近更新 更多