De gegevens die u ophaalt uit MySQL bevindt zich niet in de juiste JSON formaat en kan niet worden geconverteerd naar een array van doubles. Een JSONArray is een verzameling van JSONObject s. Op dit moment krijg je wat lijkt op een enkele Array geformatteerd als [9.32, 5.22, 10.201 ... ]
Wat je zou moeten hebben is een JSONArray die JSONObjects . bevat
points:[{1:9.32},{2:5.22}]
Je zou dan de JSONObjects . kunnen extraheren van de JSONArray en krijg eenvoudig rechtstreeks toegang tot de getalwaarden
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
je kunt dit eenvoudig converteren naar een lus om over een hele JSONArray te lopen van waarden
Update - PHP-problemen
Je string komt niet terug in de juiste JSON formaat omdat u het volledige resultaat dumpt als uw query in een enkele array wordt opgeslagen. Probeer zoiets als dit:
$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);
Ik zou dat eerst testen, maar het idee is dat je moet maken wat de JSONArray zal zijn en voeg er dan kleinere binnenarrays aan toe die het JSONObject worden . Wanneer u dat json_encodeert, heeft u een array [] met objecten {double:some_number}. Om uit te pakken, hoef je alleen maar door de JSONArray te gaan en krijg elk dubbel geassocieerd met sleutelwaarde dubbel. Het zou ongeveer als volgt werken:
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
}