Mysql
 sql >> Database >  >> RDS >> Mysql

Come passare un ArrayList a un'altra attività e convertirlo in double

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
}