Проблема разобрать JSON
Добавлено: 28 апр 2013, 19:53
В общем пишу сейчас диплом и возникла такая трабла . Написал мини API на PHP для клиента которое отдает данные в JSON.
Вот часть кода на PHP которая отвечает за преобразование в JSON
Здесь можно посмотреть результат : http://superquiz.zz.mu/api.php?format=json&num=5
А теперь сама реализация проекта под Android (парсинг JSON)
Выкидывает вот такой Exception -
org.json.JSONException: Value [{"category":{"category_name":"спорт","category_id":"37"}}] of type org.json.JSONArray cannot be converted to JSONObject
Кто знает как решить подскажите.
Вот часть кода на PHP которая отвечает за преобразование в JSON
Код: Выделить всё
<?php
include "connect_db.php";
if(isset($_GET['format']) && intval($_GET['num'])) {
$format = strtolower($_GET['format']);
$num = intval($_GET['num']);
mysql_query('SET NAMES \'UTF8\'');
$result = mysql_query('SELECT * FROM categories ORDER BY `category_id` DESC LIMIT ' . $num, $con) or die('MySQL Error.');
if($format == 'json') {
$сategories = array();
while($category = mysql_fetch_array($result, MYSQL_ASSOC)) {
$categories[] = array('category'=>$category);
}
$output = json_encode($categories);
Код: Выделить всё
[{"category":{"category_id":"37","category_name":"\u0441\u043f\u043e\u0440\u0442"}},{"category":{"category_id":"36","category_name":"fix"}},{"category":{"category_id":"35","category_name":"\u041f\u0441\u0438\u0445\u043e\u043b\u043e\u0433\u0438\u044f"}},{"category":{"category_id":"34","category_name":"\u041e\u041f Unix"}},{"category":{"category_id":"33","category_name":"\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437"}}]
Код: Выделить всё
public class API {
private HttpClient client;
private HttpGet httpGet;
private BufferedReader in;
private JSONObject jObject;
private ArrayList<Categories> categoriesArr = new ArrayList<Categories>();
public API() {
client = new DefaultHttpClient();
}
public ArrayList<Categories> getCategoryQuiz() {
Log.d("1", "1");
httpGet = new HttpGet(
"http://superquiz.zz.mu/api.php?format=json&num=1");
try {
HttpResponse response = client.execute(httpGet);
Log.d("status code", response.getStatusLine().getStatusCode() + "");
in = new BufferedReader(new InputStreamReader(response.getEntity()
.getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
while ((line = in.readLine()) != null) {
sb.append(line + "\n");
}
in.close();
String result = sb.toString();
/*
* jObject = new JSONObject(result.substring(result.indexOf("{"),
* result.lastIndexOf("}") + 1));
*/
Log.d("",result);
jObject = new JSONObject(result);
JSONArray arr = jObject.getJSONArray("category");
for (int i = 0; i < arr.length(); i++) {
JSONArray innerJsonArray = arr.getJSONArray(i);
JSONObject jsonObject = innerJsonArray.getJSONObject(0);
String id = jsonObject.getString("category_id")
.toString();
String name = jsonObject.getString("category_name")
.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return categoriesArr;
}
}
org.json.JSONException: Value [{"category":{"category_name":"спорт","category_id":"37"}}] of type org.json.JSONArray cannot be converted to JSONObject
Кто знает как решить подскажите.