能否通过CrossRef Rest API获取Zenodo出版物元数据?API调用JSON解析错误问题咨询
用CrossRef REST API获取Zenodo出版物元数据的正确方式
当然可以通过CrossRef REST API获取Zenodo上的出版物元数据,但你遇到的JSON解析错误,大概率是因为DOI在URL中的格式没有正确处理导致的。
问题原因
你调用的URL https://api.crossref.org/works/10.5281/zenodo.2594632 里,DOI中的斜杠(/)会被浏览器或请求工具当作URL路径的分隔符,导致CrossRef API无法正确识别完整的DOI,返回的可能是HTML错误页面而非标准JSON数据,这就触发了JSON解析失败。
解决方法
有两种可靠的方式来正确请求:
1. 对DOI进行URL编码
把DOI中的斜杠替换成URL编码值 %2F,让API能识别完整的DOI。正确的请求URL应该是:
https://api.crossref.org/works/10.5281%2Fzenodo.2594632
这个请求会返回标准JSON格式的元数据,你可以正常解析使用。
2. 使用查询参数方式请求
如果不想处理URL编码,也可以用CrossRef API的查询参数指定DOI,这种方式更直观:
https://api.crossref.org/works?query=10.5281/zenodo.2594632
请求会返回匹配该DOI的作品列表,你可以从返回结果的items数组中提取目标元数据。
额外建议
其实Zenodo本身提供了更直接的REST API来获取元数据,比如针对你这个记录,直接调用:
https://zenodo.org/api/records/2594632
返回的元数据会更贴合Zenodo平台的特性,如果你只需要Zenodo的内容,这种方式可能更高效。
内容的提问来源于stack exchange,提问作者Gorka
相关产品推荐
相关产品推荐

