例えば、下記URL(MediaWiki API)にあるようなJsonのキーの値が数字になっていて変動するものはどのようにパースすればいいのでしょうか。

https://ja.wikipedia.org/w/api.php?format=json&action=query&prop=categories&titles=%E3%83%89%E3%83%A9%E3%81%88%E3%82%82%E3%82%93

レスポンス

{
"continue": {
"clcontinue": "2222571|小学館の学年誌の漫画作品",
"continue": "||"
},
"query": {
"pages": {
// このキーが変動する
"2222571": {
"pageid": 2222571,
"ns": 0,
"title": "ドラえもん",
"categories": [
{
"ns": 14,
"title": "Category:SF漫画作品"
},
{
"ns": 14,
"title": "Category:いたずら・ぶっく"
},
{
"ns": 14,
"title": "Category:めばえ"
},
{
"ns": 14,
"title": "Category:コロコロコミックの漫画作品"
},
{
"ns": 14,
"title": "Category:タイムトラベルを題材とした漫画作品"
},
{
"ns": 14,
"title": "Category:ドラえもん"
},
{
"ns": 14,
"title": "Category:ネコを主人公にした物語"
},
{
"ns": 14,
"title": "Category:出典を必要とする記述のある記事/2010年11月"
},
{
"ns": 14,
"title": "Category:外部リンクがリンク切れになっている記事/2015年4月"
},
{
"ns": 14,
"title": "Category:小学校を舞台とした漫画作品"
}
]
}
}
}
}

できればGolangでのやり方をお教えいただけると助かりますが、他の言語での方法でも構いません。
ちなみに自分は下記コードでできると考え実行しましたができませんでした。何か方法があるのであれば教えて下さい。

私が考えたコード

package main

import (
    "fmt"
    "github.com/bitly/go-simplejson"
    "io/ioutil"
    "net/http"
    "net/url"
)

func main() {
    values := url.Values{}
    values.Add("format", "json")
    values.Add("action", "query")
    values.Add("prop", "categories")
    values.Add("titles", "ドラえもん")

    resp, err := http.Get("https://ja.wikipedia.org/w/api.php?" + values.Encode())
    if err != nil {
        fmt.Println(err)
    }

    defer resp.Body.Close()
    rf, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println(err)
    }
    js, err := simplejson.NewJson(rf)
    if err != nil {
        fmt.Println(err)
    }

    pageID := js.Get("query").Get("pages")
    fmt.Println(pageID)
    category, err := pageID.Get("categories").GetIndex(1).Get("title").String()
    if err != nil {
        fmt.Println(err)
    }

    fmt.Println(category)

}