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
}