2010-10-15 2 views
0

код обработки запросаAndroid-декодирования JSON ответ

while($op=db_fetch_object($result)) 
    { 
    $data[$i++]=array($op->name,$op->age,$op->dept); 
    } 

    echo json_encode($data); 

$ данных содержит

[[ "Aadidev", "23", "division1"], [ "Ragman", "35" , "division3"], [ "Sahlaad", "27", "division1"], [ "Maraadhak", "21", "Филиал2"], [ "Arya", "48", "division1"], [» Хвостовик " "25", "division1"], [ "Aatmaj", "54", "division1"], [ "Абхай", "46", "Филиал2"], [ "Bhinatha", "37"," разделение2 "], [" Абхинет "," 29 "," разделение3 "], [" Срита "," 47 "," деление1 "]]

Android код

String nameop=""; 
try{ 
    JSONObject json=new JSONObject(page); 
    JSONArray namearr=json.names(); 
    JSONArray valarr=json.toJSONArray(namearr); 
    for(int i=0;i<valarr.length();i++) 
    { 
    nameop+=namearr.getString(i)+" "+valarr.getString(i)+"\n"; 
    } 
    result.setText(nameop); 
    }catch(Exception e){ 
    Toast.makeText(this,e.toString(), Toast.LENGTH_LONG).show(); 
    } 

что приводит Исключением

org.json.JSONException: A JSONObject текст должен начинаться с '{' на символ 1 из [[ "Aadidev",» 23" , "division1"], [ "Ragman", "35", "division3"], [ "Sahlaad", "27", "division1"], [ "Maraadhak", "21", "Филиал2"], [ "Arya", "48", "division1"], [ "хвостовика", "25", "division1"], [ "Aatmaj", "54", "division1"], [ "Абхай", "46" , "Филиал2"], [ "Bhinatha", "37", "Филиал2"], [ "Абхинит", "29", "division3"], [ "Srita", "47", "division1"]].

ответ

0

Ваша строка json должна начинаться с символа '{'. Попробуйте разобрать строку из своего приложения php и посмотреть, что произойдет.

0

Попробуйте изменить ваш PHP код немного:

в то время как ($ оп = mysql_fetch_array (mysql_query (ваш запрос)))
{
      $ данных [$ я] "имя" [ ] = $ op ["name"];
      $ data [$ i] ["age"] = $ op ["age"];
      $ data [$ i] ["dept"] = $ op ["dept"];
      $ i ++;
}

echo json_encode ($ data);



Это возвращает JSON строку типа:
[{ "Имя": "name1", "возраст": "age1", "Отдел": "dept1"}, { "имя":» name2" , "возраст": "age2", "отдел": "dept2"}]



Затем вам нужно разобрать этот JSON строку в Java коде

+0

viv дает такую ​​же ошибку – ArK

+0

Я немного изменил код выше, попробуйте использовать этот способ ........ также попробуйте, что сказал «Zoran Zaric» – viv

+0

. Java json parser, похоже, ожидает «{ как первый символ, поэтому он не примет «вашу» строку json. –

1

вы можете использовать echo json_encode($data, JSON_FORCE_OBJECT);, чтобы заставить создание объект.

Просто использование json_encode() в массиве не генерирует объект, который, по-видимому, предполагает JSONObject Java.

это PHP> = 5.3!