如何从此 json 输出中提取特定值
How to extract a particular value from this json output
我正在尝试解码 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"
}
],
我能够提取其他详细信息,如标题、作者姓名等。但这一个似乎有点棘手。
对不起,如果这是一个愚蠢的问题。
所以,假设这是您的整个 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()
到 return returned 数组的第一个元素,在本例中它应该是唯一的对象 returned.
var doi = arr.articleids.filter(function(v)
{
return v.idtype == "doi";
}).pop();
变量 doi
现在将保存过滤后的对象。
idtype: "doi"
idtypen: 3
value: "10.1002/14651858.CD001801.pub2"
在您的示例中,值 "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
试试这个:
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"}
我正在尝试解码 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"
}
],
我能够提取其他详细信息,如标题、作者姓名等。但这一个似乎有点棘手。
对不起,如果这是一个愚蠢的问题。
所以,假设这是您的整个 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()
到 return returned 数组的第一个元素,在本例中它应该是唯一的对象 returned.
var doi = arr.articleids.filter(function(v)
{
return v.idtype == "doi";
}).pop();
变量 doi
现在将保存过滤后的对象。
idtype: "doi"
idtypen: 3
value: "10.1002/14651858.CD001801.pub2"
在您的示例中,值 "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
试试这个:
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"}