Die Daten, die Sie aus MySQL
abrufen ist nicht im richtigen JSON
Format und kann nicht in ein Array von Doubles konvertiert werden. Ein JSONArray
ist eine Sammlung von JSONObject
s. Im Moment erhalten Sie scheinbar ein einzelnes Array
formatiert wie [9.32, 5.22, 10.201 ... ]
Was Sie haben sollten, ist ein JSONArray
die JSONObjects
enthält
points:[{1:9.32},{2:5.22}]
Sie könnten dann die JSONObjects
extrahieren aus dem JSONArray
und einfach direkt auf die Zahlenwerte zugreifen
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
Sie können dies einfach in eine Schleife umwandeln, um ein ganzes JSONArray
zu durchlaufen von Werten
Update – PHP-Probleme
Ihre Zeichenfolge kommt nicht im richtigen JSON
zurück formatieren, da Sie das gesamte Ergebnis Ihrer Abfrage in ein einzelnes Array ausgeben. Probieren Sie so etwas aus:
$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);
Ich würde das zuerst testen, aber die Idee ist, dass Sie das erstellen müssen, was das JSONArray
sein wird und fügen Sie dann kleinere innere Arrays hinzu, die zum JSONObject
werden . Wenn Sie das json_encoden, haben Sie ein Array [] mit Objekten {double:some_number}. Zum Extrahieren müssen Sie lediglich das JSONArray
durchlaufen und erhalten Sie jedes Double, das mit dem Schlüsselwert Double verknüpft ist. Es würde ungefähr so funktionieren:
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
}