AndroidでJSON
自分の備忘録もこめて
Androidの開発を趣味でしています
Androidでサーバーと通信をしてJSONを返り値として受け取るとき次のようなエラーが出てはまりました
JSONObject text must begin with '{' at character 1
JSONObjectのtextは'{'から始まらないとだめだよ ってこと
調べてみると確かに'['から始まっていました
要するに
[{jsondata1}, {jsondata2}, {jsondata3}]のようになっていました
PHP側で返す時に注意すればいいのかもしれませんが, PHPは編集出来ない状況だったのでなんとかクライアント(Android)側でなんとかしなければならないことに・・・
(このPHPのAPIは以前JavaScriptと通信するように作成したのでこんな厳格に考えてなかった・・・ダメですね)
で, どうしたかということですが
[{jsondata1}, {jsondata2}, {jsondata3}]を一旦String型に変換
//イメージ的にはこんな感じ String hoge = [{jsondata1}, {jsondata2}, {jsondata3}] + "";
変換する
//hogeを'{'から始まるJSONの形に合うように文字列の結合 keyのdataは適当 hoge = "{data:" + hoge + "}";
取得する
//上で作ったJSON hogeからJSONArrayを取得する JSONArray fuga = hoge.getJSONArray("data"); for (int i = 0; i < fuga.length(); i++) { //あとはこのfugaからデータを取得してやったり }
無理やりにも程があります
PHP側を直せるようになるまでの付け焼刃