如何解析HTTP请求返回的JSON字符串并提取source字段?
如何从HTTP GET返回的JSON中提取source字段并打印
你的代码存在几个关键问题,导致无法正确提取source字段:
- 重复调用
loadString():连续两次调用await req.loadString()完全多余,第一次已经获取到响应字符串,第二次调用还可能引发异常。 - 未解析响应字符串为JSON对象:
loadString()返回的是纯文本字符串,必须先转换为JavaScript对象才能访问内部属性。 - JSON结构访问错误:返回的JSON中
results是数组而非单个对象,不能直接用response.results.source访问,需要先定位数组元素再取source。
修正后的完整代码
let req = new Request(fullurlfiltered) req.method = "GET" req.headers={ "Authorization": api, "Content-Type": "application/json", } // 仅调用一次获取响应字符串 const responseStr = await req.loadString() // 将字符串解析为可操作的JSON对象 const responseObj = JSON.parse(responseStr) // 遍历results数组,逐个打印source字段 responseObj.results.forEach(item => { console.log(item.source) }) // 若只需获取第一个元素的source,可直接用索引: // console.log(responseObj.results[0].source)
关键步骤说明
- 解析JSON字符串:通过
JSON.parse()把响应文本转换成JavaScript对象,这是访问JSON属性的前提。 - 正确访问数组结构:
responseObj.results是数组,需要用forEach遍历所有元素,或通过[索引]定位单个元素,再提取其中的source字段。
你之前尝试的response[0]是直接对字符串取索引,得到的是字符串第一个字符;response.results.source则是因为未解析JSON,且错误地把数组当成了单个对象,所以均无效。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

