アンドロイドアプリに使っているAPIがXMLからJSONに変わったので、JSONをパースする必要が出てきた。
JAVAでJSONをパースする方法はいくつもあるみたいで、jackson使ったほうが簡単らしいが、とりあえずやってみる。
パースしたいデータは次のようなものだ。resultのword以下からオブジェクトを取得して行きたい。
{
"id": "1234-1",
"jsonrpc": "2.0",
"result": {
"word": [
{
"furigana": "かんじ",
"roman": "kanzi",
"surface": "漢字"
},
{
"furigana": "かなまじり",
"roman": "kanamaziri",
"subword": [
{
"furigana": "かな",
"roman": "kana",
"surface": "かな"
},
{
"furigana": "ま",
"roman": "ma",
"surface": "交"
},
{
"furigana": "じり",
"roman": "ziri",
"surface": "じり"
}
],
"surface": "かな交じり"
},
{
"furigana": "ぶん",
"roman": "bun",
"surface": "文"
},
{
"surface": "に"
},
{
"surface": "ふりがな"
},
{
"surface": "を"
},
{
"furigana": "ふる",
"roman": "huru",
"subword": [
{
"furigana": "ふ",
"roman": "hu",
"surface": "振"
},
{
"furigana": "る",
"roman": "ru",
"surface": "る"
}
],
"surface": "振る"
},
{
"surface": "こと"
},
{
"surface": "。"
}
]
}
}
JSONObject json = new JSONObject(jsonText);
JSONArray word = json.getJSONObject("result").getJSONArray("word");
これでword以下をオブジェクトとして取得できたが。あとはjavascriptと同じような書き方でパースをする。
更に細かく見ていく必要がある。
for文とswitchを使いながらパースしていった。
JSONArray elements = json.getJSONObject("result").getJSONArray("word");
for (int i = 0; i < elements.length(); i++) {
JSONObject element = elements.getJSONObject(i);
switch (element.length()) {
}}