使用非标准键名访问 JSON 对象
Access JSON object with non-standard key names
MediaWiki API returns JSON 键名如“3314”和“*”。当我尝试以正常方式访问它们时会抛出这些错误。
var ob = {
"query": {
"normalized": [
{
"from": "DE:OpenStreetMap_License",
"to": "DE:OpenStreetMap License"
}
],
"pages": {
"3314": {
"pageid": 3314,
"ns": 200,
"title": "DE:OpenStreetMap License",
"revisions": [
{
"contentformat": "text/x-wiki",
"contentmodel": "wikitext",
"*": "{{Languages|OpenStreetMap_License}}\n\nSiehe '''[http://www.openstreetmap.org/copyright www.openstreetmap.org/copyright]'''.\n\n[[Category:License]]"
}
]
}
}
}
};
您看到了问题所在:名为 3314 和 *.
的键
我的第一个方法是使用
$("#b").val(ob.query.pages.3314.revisions[0].*);
这当然会引发错误。
我现在正在使用它
// this works with jquery, but is ugly
$.each(ob.query.pages, function(p, pageobject) {
$("#a").text(p);
$.each(pageobject.revisions[0], function(k,v) {
if (k == "*") {
$("#b").text(v);
}
});
});
但这不是访问名为“*”的单个该死的 属性 的正确方法。
参见fiddle:http://jsfiddle.net/x5znr1jv/2/
点赞
$("#a").val(ob.query.pages['3314'].revisions[0]['*']);
MediaWiki API returns JSON 键名如“3314”和“*”。当我尝试以正常方式访问它们时会抛出这些错误。
var ob = {
"query": {
"normalized": [
{
"from": "DE:OpenStreetMap_License",
"to": "DE:OpenStreetMap License"
}
],
"pages": {
"3314": {
"pageid": 3314,
"ns": 200,
"title": "DE:OpenStreetMap License",
"revisions": [
{
"contentformat": "text/x-wiki",
"contentmodel": "wikitext",
"*": "{{Languages|OpenStreetMap_License}}\n\nSiehe '''[http://www.openstreetmap.org/copyright www.openstreetmap.org/copyright]'''.\n\n[[Category:License]]"
}
]
}
}
}
};
您看到了问题所在:名为 3314 和 *.
的键我的第一个方法是使用
$("#b").val(ob.query.pages.3314.revisions[0].*);
这当然会引发错误。
我现在正在使用它
// this works with jquery, but is ugly
$.each(ob.query.pages, function(p, pageobject) {
$("#a").text(p);
$.each(pageobject.revisions[0], function(k,v) {
if (k == "*") {
$("#b").text(v);
}
});
});
但这不是访问名为“*”的单个该死的 属性 的正确方法。
参见fiddle:http://jsfiddle.net/x5znr1jv/2/
点赞
$("#a").val(ob.query.pages['3314'].revisions[0]['*']);