2017-09-14 1 views
0

Je construis une application Android qui utilise la requête http pour la consommation de l'API Web. J'ai fait une demande assez facilement, tout fonctionne bien, mais je ne peux pas trouver un moyen de convertir JSONArray Je suis en train d'obtenir des valeurs Float x, Float y. Toute aide bienvenue.comment convertir JSONArray en valeurs de chaîne/float

Comment API regarde: enter image description here

Mon code:

  @Override 
     public void onResponse(Call call, Response response) throws IOException { 

      try { 
       JSONObject jsonObj = new JSONObject(response.body().string()); 

       // Getting JSON Array node 
       JSONArray price = jsonObj.getJSONArray("price"); 



       for(int I = 0; I < price.length(); I++) 
       { 




        Float x ; 
        Float y ; 

        values.add(new Entry(x,y)); // add one entry per hour 


       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 


     } 
    }); 

Répondre

1

simplement vous pouvez utiliser comme suit:

JsonArray jArr = price.getJSONArray(I); 
values.add(new Entry((float)jArr.getDouble(0), (float)jArr.getDouble(1))); 

De plus, le price vous devez récupérer doit être JSONObject place d'un autre tableau.

+0

merci pour la réponse! new Entry accepte uniquement les valeurs Float, mais il n'y a pas d'option getFloat, comment puis-je y parvenir? –

+1

@ VaclovasRekašiusJr. vous pouvez changer le type d'entrée, de toute façon vérifier la mise à jour, vous pouvez obtenir la valeur de float. – Ibrahim

+0

merci pour votre réponse, m'a vraiment beaucoup aidé. Mais mettez à jour votre réponse en changeant cette ligne values.add (new Entry ((float) jArr.getDouble (0), (float) jArr.getDouble (1))); Suppression de la boxe, et juste coulée pour flotter fonctionne bien. Merci encore. –

1

Avez-vous essayé avec comme:

private void getPricesArray(){ 
    ArrayList<Double[]> pricesDoubleArray = new ArrayList<>(); 
    for (int index = 0; index < pricesDoubleArray.size(); index++) { 
     pricesDoubleArray.get(index)[0] = Double.valueOf(16748584949L); // 
     pricesDoubleArray.get(index)[1] = 4506.45; // 
    } 
} 
+0

Non, mais je vais y jeter un coup d'oeil, merci pour la réponse! –