使用非标准键名访问 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]['*']);