Данните, които извличате от MySQL
не е в правилния JSON
формат и не може да се преобразува в масив от двойници. JSONArray
е колекция от JSONObject
с. В момента получавате това, което изглежда като един Array
форматиран като [9.32, 5.22, 10.201 ... ]
Това, което трябва да имате, е JSONArray
който съдържа JSONObjects
points:[{1:9.32},{2:5.22}]
След това можете да извлечете JSONObjects
от JSONArray
и просто достъп до числовите стойности директно
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
можете лесно да преобразувате това в цикъл за изпълнение на цял JSONArray
на стойности
Актуализация – проблеми с PHP
Вашият низ не се връща в правилния JSON
формат, защото изхвърляте целия резултат, ако вашата заявка е в един масив. Опитайте нещо подобно:
$outerObject = array();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
$numResult = count($result);
for($i = 0; $i < $numResult; $i++){
$indexDouble = result[$i];
$innerObject = array();
$innerObject['double'] = $indexDouble;
$outerObject[] = $innerObject;
}
$json = array();
$json['metoxes'] = $outerObject;
echo json_encode($json);
Първо бих тествал това, но идеята е, че трябва да създадете това, което ще бъде JSONArray
и след това добавете към него по-малки вътрешни масиви, които ще станат JSONObject
. Когато json_encode, ще имате масив [] с обекти {double:some_number}. За да извлечете, всичко, което трябва да направите, е да преминете през JSONArray
и да получите всеки двоен, свързан с ключовата стойност double. Ще работи нещо подобно:
JSONArray fullArray = JSONArray(stringInput);
int length = fullArray.length;
for(int i = 0; i < length; i++){
double target = fullArray.getJSONObject(i).getDouble("double");
//do something with the double
}