Dane, które pobierasz z MySQL
nie jest w prawidłowym JSON
format i nie można go przekonwertować na tablicę podwojeń. JSONArray
jest zbiorem JSONObject
s. W tej chwili otrzymujesz coś, co wydaje się być pojedynczą Array
sformatowany jak [9.32, 5.22, 10.201 ... ]
Powinieneś mieć JSONArray
który zawiera JSONObjects
points:[{1:9.32},{2:5.22}]
Następnie możesz wyodrębnić JSONObjects
z JSONArray
i po prostu uzyskaj bezpośredni dostęp do wartości liczbowych
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
możesz łatwo przekonwertować to na pętlę, aby uruchomić cały JSONArray
wartości
Aktualizacja – problemy z PHP
Twój ciąg nie wraca w prawidłowym JSON
sformatować, ponieważ zrzucasz cały wynik, jeśli zapytanie do jednej tablicy. Wypróbuj coś takiego:
$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);
Przetestowałbym to najpierw, ale pomysł polega na tym, że musisz utworzyć coś, co będzie JSONArray
a następnie dodaj do niego mniejsze wewnętrzne tablice, które staną się JSONObject
. Kiedy json_encode będziesz miał tablicę [] z obiektami {double:some_number}. Aby wyodrębnić, wszystko, co musisz zrobić, to przejść przez JSONArray
i uzyskaj każde podwójne skojarzone z podwójną wartością klucza. Działałoby to mniej więcej tak:
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
}