AndroidでJSON

自分の備忘録もこめて

 

Androidの開発を趣味でしています

Androidでサーバーと通信をしてJSONを返り値として受け取るとき次のようなエラーが出てはまりました

 

JSONObject text must begin with '{' at character 1

 

JSONObjectのtextは'{'から始まらないとだめだよ ってこと

 

調べてみると確かに'['から始まっていました

要するに

[{jsondata1}, {jsondata2}, {jsondata3}]のようになっていました

 

PHP側で返す時に注意すればいいのかもしれませんが, PHPは編集出来ない状況だったのでなんとかクライアント(Android)側でなんとかしなければならないことに・・・

(このPHPAPIは以前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側を直せるようになるまでの付け焼刃