I dati che stai estraendo da MySQL
non è nel corretto JSON
format e non può essere convertito in un array di double. Un JSONArray
è una raccolta di JSONObject
S. In questo momento stai ricevendo quello che sembra essere un singolo Array
formattato come [9.32, 5.22, 10.201 ... ]
Quello che dovresti avere è un JSONArray
che contiene JSONObjects
points:[{1:9.32},{2:5.22}]
È quindi possibile estrarre JSONObjects
da JSONArray
e accedi semplicemente ai valori numerici direttamente
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");
puoi facilmente convertirlo in un ciclo da eseguire su un intero JSONArray
di valori
Aggiornamento - Problemi con PHP
La tua stringa non torna nel corretto JSON
format perché stai scaricando l'intero risultato se la tua query in un singolo array. Prova qualcosa del genere:
$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);
Lo proverei prima, ma l'idea è che devi creare quello che sarà il JSONArray
e quindi aggiungi array interni più piccoli che diventeranno il JSONObject
. Quando json_encode avrai un array [] con oggetti {double:some_number}. Per estrarre, tutto ciò che devi fare è scorrere il JSONArray
e ottieni ogni double associato al valore della chiave double. Funzionerebbe in questo modo:
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
}