Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como passar um ArrayList para outra atividade e convertê-lo em double


Os dados que você está extraindo do MySQL não está no JSON adequado formato e não pode ser convertido em um array de doubles. Um JSONArray é uma coleção de JSONObject s. Agora você está recebendo o que parece ser um único Array formatado como [9.32, 5.22, 10.201 ... ]

O que você deve ter é um JSONArray que contém JSONObjects
points:[{1:9.32},{2:5.22}]

Você pode então extrair os JSONObjects do JSONArray e basta acessar os valores numéricos diretamente
JSONArray points = new JSONArray(pointsString);
JSONObject firstPoint = points.getJSONObject(1);
double value = firstPoint.getDouble("1");

você pode facilmente converter isso em um loop para executar um JSONArray inteiro de valores

Atualização - problemas de PHP

Sua string não está voltando no JSON adequado format porque você está despejando todo o resultado se sua consulta em uma única matriz. Tente algo assim:
$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);

Eu testaria isso primeiro, mas a ideia é que você precise criar o que será o JSONArray e, em seguida, adicione a ele matrizes internas menores que se tornarão o JSONObject . Quando você json_encode que você terá um array [] com objetos {double:some_number}. Para extrair, tudo o que você precisa fazer é percorrer o JSONArray e obtenha cada double associado ao valor da chave double. Funcionaria mais ou menos assim:
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
}