我正在尝试解码pubmed json输出,如下所示。
https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=29753496&retmode=json
https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=15674886&retmode=json
如何从此输出中提取doi?
"articleids": [
{
"idtype": "pubmed",
"idtypen": 1,
"value": "15674886"
},
{
"idtype": "doi",
"idtypen": 3,
"value": "10.1002/14651858.CD001801.pub2"
},
{
"idtype": "rid",
"idtypen": 8,
"value": "15674886"
},
{
"idtype": "eid",
"idtypen": 8,
"value": "15674886"
}
],
我能够提取其他细节,如标题,作者姓名等。但这个似乎有点棘手。
对不起,如果这是一个愚蠢的问题。
答案 0 :(得分:1)
因此,我们假设这是您的整个JSON字符串。
var json = '{"articleids": [
{ "idtype": "pubmed", "idtypen": 1, "value": "15674886" },
{ "idtype": "doi", "idtypen": 3, "value": "10.1002/14651858.CD001801.pub2" },
{ "idtype": "rid", "idtypen": 8, "value": "15674886" },
{ "idtype": "eid", "idtypen": 8, "value": "15674886" }
]}';
现在我们要解析它并将其放入对象中。
var arr = JSON.parse(json);
要根据项目的值获取特定对象,我们需要使用.filter()
。我们将使用.pop()
返回返回数组的第一个元素,在这种情况下应该是返回的唯一对象。
var doi = arr.articleids.filter(function(v)
{
return v.idtype == "doi";
}).pop();
变量doi
现在将保留过滤后的对象。
idtype: "doi"
idtypen: 3
value: "10.1002/14651858.CD001801.pub2"
答案 1 :(得分:0)
试试这个:
var jsonObj = {
"articleids": [{
"idtype": "pubmed",
"idtypen": 1,
"value": "15674886"
},
{
"idtype": "doi",
"idtypen": 3,
"value": "10.1002/14651858.CD001801.pub2"
},
{
"idtype": "rid",
"idtypen": 8,
"value": "15674886"
},
{
"idtype": "eid",
"idtypen": 8,
"value": "15674886"
}
]
};
var res = jsonObj.articleids.filter(obj => obj.idtype == 'doi');
console.log(res[0]); // {idtype: "doi", idtypen: 3, value: "10.1002/14651858.CD001801.pub2"}
答案 2 :(得分:-1)
在您的示例中,值“doi”可以引用为:
articleids[1].idtype
以下是您可以自己使用的示例。
注意:我将数据结构包装在名为obj
var obj = {
"articleids": [{
"idtype": "pubmed",
"idtypen": 1,
"value": "15674886"
}, {
"idtype": "doi",
"idtypen": 3,
"value": "10.1002/14651858.CD001801.pub2"
}, {
"idtype": "rid",
"idtypen": 8,
"value": "15674886"
}, {
"idtype": "eid",
"idtypen": 8,
"value": "15674886"
}]
}
//access doi
obj.articleids[1].idtype // -> 'doi'
//loop throigh idTypes and log them to the console
obj.articleids.forEach(function(article) {
console.log(article.idtype)
})
JSON允许您访问[方括号]中的键,但您也可以使用'。'将字符串作为对象键时的属性访问器。给出:
var me = {"name":"AK"}
AK 可以引用为
me["name"]
或
me.name