sql >> Base de Datos >  >> RDS >> Mysql

Cómo pasar un ArrayList a otra actividad y convertirlo en doble

Los datos que extrae de MySQL no está en el JSON correcto formato y no se puede convertir a una matriz de dobles. Un JSONArray es una colección de JSONObject s. En este momento, obtiene lo que parece ser un solo Array formateado como [9.32, 5.22, 10.201 ... ]

Lo que deberías tener es un JSONArray que contiene JSONObjects

points:[{1:9.32},{2:5.22}]

Luego podría extraer los JSONObjects desde el JSONArray y simplemente acceda a los valores numéricos directamente

JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");

puede convertir fácilmente esto en un bucle para ejecutar todo un JSONArray de valores

Actualización:problemas de PHP

Su cadena no regresa en el JSON correcto formato porque está volcando el resultado completo si su consulta en una sola matriz. Prueba algo como esto:

$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 probaría primero, pero la idea es que necesitas crear lo que será el JSONArray y luego agregue matrices internas más pequeñas que se convertirán en JSONObject . Cuando json_encode, tendrá una matriz [] con objetos {doble:algún_número}. Para extraer, todo lo que tiene que hacer es recorrer el JSONArray y obtenga cada doble asociado con el valor clave doble. Funcionaría algo como esto:

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
}