Datan du hämtar från MySQL
är inte i korrekt JSON
format och kan inte konverteras till en array av dubblar. En JSONArray
är en samling av JSONObject
s. Just nu får du vad som verkar vara en enda Array
formaterad som [9.32, 5.22, 10.201 ... ]
Det du borde ha är en JSONArray
som innehåller JSONObjects
points:[{1:9.32},{2:5.22}]
Du kan sedan extrahera JSONObjects
från JSONArray
och få helt enkelt tillgång till siffervärdena direkt
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
du kan enkelt konvertera detta till en loop för att köra över en hel JSONArray
av värden
Uppdatering – PHP-problem
Din sträng kommer inte tillbaka i korrekt JSON
format eftersom du dumpar hela resultatet om din fråga i en enda array. Prova något sånt här:
$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);
Jag skulle testa det först men tanken är att du måste skapa vad som kommer att bli JSONArray
och lägg sedan till mindre inre arrayer som kommer att bli JSONObject
. När du json_kodar det kommer du att ha en array [] med objekt {double:some_number}. För att extrahera, allt du behöver göra är att gå igenom JSONArray
och få varje dubbel associerad med nyckelvärde dubbel. Det skulle fungera ungefär så här:
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
}