Les données que vous extrayez de MySQL
n'est pas dans le bon JSON
format et ne peut pas être converti en un tableau de doubles. Un JSONArray
est une collection de JSONObject
s. En ce moment, vous obtenez ce qui semble être un seul Array
formaté comme [9.32, 5.22, 10.201 ... ]
Ce que vous devriez avoir est un JSONArray
qui contient JSONObjects
points:[{1:9.32},{2:5.22}]
Vous pouvez ensuite extraire les JSONObjects
à partir du JSONArray
et accédez simplement aux valeurs numériques directement
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
vous pouvez facilement le convertir en boucle pour l'exécuter sur un JSONArray
entier de valeurs
Mise à jour - Problèmes PHP
Votre chaîne ne revient pas dans le bon JSON
format parce que vous videz le résultat entier si votre requête dans un seul tableau. Essayez quelque chose comme ceci :
$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);
Je testerais cela d'abord, mais l'idée est que vous devez créer ce qui sera le JSONArray
puis ajoutez-y des tableaux internes plus petits qui deviendront le JSONObject
. Lorsque vous json_encode, vous aurez un tableau [] avec des objets {double:some_number}. Pour extraire, tout ce que vous avez à faire est de parcourir le JSONArray
et obtenez chaque double associé à la valeur de clé double. Cela fonctionnerait comme ceci :
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
}