2012-06-13 2 views
0

здесь мой PHP кодNull дисплей при разборе JSON из PHP для андроид

$titikPetaInti = array(); 
while($row = mysql_fetch_assoc($hasil2)) 
{ 
    $titikPetaInti[] = $row['koordinat']; 
} 

$data = "{titikPeta:".json_encode($titikPetaInti)."}"; 
echo $data; 
?> 

тогда вот мой андроид код xResultTitikPeta является запрос результат на PHP

jObject = new JSONObject(xResultTitikPeta); 
     JSONArray myArray1 = (JSONArray) jObject.getJSONArray("titikPeta"); 
     String[]titikPeta = new String[myArray1.length()]; 

     for(int a = 0; a < myArray1.length(); a++) 
     { 
      titikPeta[a] = myArray1.getJSONObject(a).toString(); 
     } 
     teks1 = (TextView) findViewById(R.id.textView1); 
     teks1.setText(Arrays.toString(titikPeta)); 

это отображение нуль на эмуляторе, как нет значения

--EDIT--

я думаю, что есть что-то ошибка в анализе кода, CuS, когда я отобразить xResultTitikPeta в андроида, это дает мне результирующую строку

здесь результат xResultTitikPeta

{titikPeta:["-8.705378,115.225189","-8.56056700000000,115.42395100000","-8.57659700000000,115.40065300000","-8.55596300000000,115.41085700000","-8.51855200000000,115.491908000000","-8.54743200000000,115.41036800000","-8.56551100000000,115.45173900000","-8.00000000,115.616019000000"]} 
+0

ты уверен, что если $ строки [ «koordinat»] является settign значения? – Sana

+0

@ Сана, да. и я сам пробовал PHP-код, и он дал мне результат, но когда он разобрался с android, они возвращают нулевое значение – sephtian

+0

@Ignacio ПОЧЕМУ ЧТО? !!!! – sephtian

ответ

0

ОК, я нашел вашу ошибку! А также фиксируя $data = json_encode(array("titikPeta" => $titikPetaInti)); вопрос, проблема здесь:

titikPeta[a] = myArray1.getJSONObject(a).toString(); 

Элементы myArray1 фактически типа string и вызвать исключение быть выброшен, так что вам нужно вместо этого:

titikPeta[a] = myArray1.getString(a); 

Этот производит вывод:

[-8.705378,115.225189, -8.56056700000000,115.42395100000, -8.57659700000000,115.40065300000, -8.55596300000000,115.41085700000, -8.51855200000000,115.491908000000, -8.54743200000000,115.41036800000, -8.56551100000000,115.45173900000, -8.00000000,115.616019000000] 

Поскольку каждый элемент в массиве имеет форму "-8.705378,115.225189", парсер JSON предполагает это строки. Если изменить элементы в "-8.705378","115.225189" вы также можете использовать:

titikPeta[a] = Double.toString(myArray1.getDouble(a)); 

Однако первый вариант тоже будет работать.

Примечания: мои личные предпочтения в том, что я хотел бы объявить каждый элемент массива как:

{"x":-8.705378,"y":115.225189} 
1

это уродливы JSON! нет двойных кавычек на ключ.

$data = "{titikPeta:".json_encode($titikPetaInti)."}"; 

вместо делать:

$data = '{"titikPeta":'.json_encode($titikPetaInti).'}'; 

Редакцией:

Хорошо, удалить эту руку сделанный подход:

$data = json_encode(array("titikPeta"=>$titikPetaInti)); 
+0

все еще не работает :( – sephtian

+1

проверить отредактированный пост; не могу ничего подумать .. –

+0

благодарит за ответ, но, к сожалению, он тоже не работает :( – sephtian

0

попробовать

$data = "{\"titikPeta\":".json_encode($titikPetaInti)."}"; 
+0

все еще не работает :( – sephtian

Смежные вопросы