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。请注意这一点。
参考:
我的 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。请注意这一点。