De data, du henter fra MySQL er ikke i korrekt JSON format og kan ikke konverteres til en række doubler. En JSONArray er en samling af JSONObject s. Lige nu får du, hvad der ser ud til at være et enkelt Array formateret som [9.32, 5.22, 10.201 ... ]
Det du skal have er en JSONArray der indeholder JSONObjects
points:[{1:9.32},{2:5.22}]
Du kan derefter udpakke JSONObjects fra JSONArray og få direkte adgang til talværdierne
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
du kan nemt konvertere dette til en loop for at køre over en hel JSONArray af værdier
Opdatering - PHP-problemer
Din streng kommer ikke tilbage i korrekt JSON format, fordi du dumper hele resultatet, hvis din forespørgsel ind i et enkelt array. Prøv noget som dette:
$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);
Jeg ville teste det først, men ideen er, at du skal oprette, hvad der bliver JSONArray og føj derefter mindre indre arrays til det, der bliver JSONObject . Når du json_encode det, vil du have et array [] med objekter {double:some_number}. Alt du skal gøre for at udtrække er at gå gennem JSONArray og få hver fordobling forbundet med nøgleværdien fordoblet. Det ville fungere sådan her:
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
}