Boucle à travers un objet et obtenir la valeur de toutes les variables de it

Marcus Holden:

Cela peut être extrêmement simple et il me éludant, et je recherche d'une réponse, mais il n'y a que des réponses JS que je peux trouver. Voici ma configuration:

J'utilise Gson pour analyser un tableau d'objets JSON à POJO. I en utilisant un ensuite un for-looppour envoyer chacun des objets analysé pour un procédé de traitement. Je ne peux pas sembler trouver un moyen de boucle à travers les objets individuels et obtenir les valeurs contenues dans.

Par exemple:

private Double thing1;
private Double thing2;
private Dboule thing3;

private void doSomething(MyObject myObj){
 ...myObject contains thing1, thing2, thing3 which are each doubles.

//I want to loop through the entire object, 
//grab thing1's value and do something with it, then grab thing2's value.. etc. 


}

Est-ce facile à faire? J'ai essayé pendant un certain temps semblent maintenant et je ne peux pas l'obtenir au travail. Je peux les saisir individuellement assez facilement en utilisant:

myObj.thing1

Mais il devra être fait dans une boucle comme il y a une tonne de valeurs entrant.

MISE À JOUR: Cela fonctionne PRESQUE mais il imprime tout l'objet et il imprime les valeurs d'objets individuels. Comment puis-je obtenir pour imprimer seulement les valeurs individuelles sans avoir d'abord tout l'impression?

for(Field field : data.getClass().getDeclaredFields()){
    Object value = field.get(data);
    System.out.println(value);        
}

Production:

    [{"accel_1":0.012,"accel_2":0.125,"accel_3":0.03,"accel_4":0.012,"accel_5":0.125,"accel_6":0.03,"accel_7":0.012,"accel_8":0.125,"accel_9":0.03,"accel_10":0.012,"accel_11":0.125,"accel_12":0.03},{"accel_1":0.18,"accel_2":0.26,"accel_3":0.05,"accel_4":0.18,"accel_5":0.26,"accel_6":0.05,"accel_7":0.18,"accel_8":0.26,"accel_9":0.05,"accel_10":0.18,"accel_11":0.26,"accel_12":0.05},{"accel_1":0.06,"accel_2":0.02,"accel_3":0.03,"accel_4":0.06,"accel_5":0.02,"accel_6":0.03,"accel_7":0.06,"accel_8":0.02,"accel_9":0.03,"accel_10":0.06,"accel_11":0.02,"accel_12":0.03}]
0.012
0.125
0.03
0.012
0.125
0.03
0.012
0.125
0.03
0.012
0.125
0.03
[{"accel_1":0.012,"accel_2":0.125,"accel_3":0.03,"accel_4":0.012,"accel_5":0.125,"accel_6":0.03,"accel_7":0.012,"accel_8":0.125,"accel_9":0.03,"accel_10":0.012,"accel_11":0.125,"accel_12":0.03},{"accel_1":0.18,"accel_2":0.26,"accel_3":0.05,"accel_4":0.18,"accel_5":0.26,"accel_6":0.05,"accel_7":0.18,"accel_8":0.26,"accel_9":0.05,"accel_10":0.18,"accel_11":0.26,"accel_12":0.05},{"accel_1":0.06,"accel_2":0.02,"accel_3":0.03,"accel_4":0.06,"accel_5":0.02,"accel_6":0.03,"accel_7":0.06,"accel_8":0.02,"accel_9":0.03,"accel_10":0.06,"accel_11":0.02,"accel_12":0.03}]
0.18
0.26
0.05
0.18
0.26
0.05
0.18
0.26
0.05
0.18
0.26
0.05
[{"accel_1":0.012,"accel_2":0.125,"accel_3":0.03,"accel_4":0.012,"accel_5":0.125,"accel_6":0.03,"accel_7":0.012,"accel_8":0.125,"accel_9":0.03,"accel_10":0.012,"accel_11":0.125,"accel_12":0.03},{"accel_1":0.18,"accel_2":0.26,"accel_3":0.05,"accel_4":0.18,"accel_5":0.26,"accel_6":0.05,"accel_7":0.18,"accel_8":0.26,"accel_9":0.05,"accel_10":0.18,"accel_11":0.26,"accel_12":0.05},{"accel_1":0.06,"accel_2":0.02,"accel_3":0.03,"accel_4":0.06,"accel_5":0.02,"accel_6":0.03,"accel_7":0.06,"accel_8":0.02,"accel_9":0.03,"accel_10":0.06,"accel_11":0.02,"accel_12":0.03}]
0.06
0.02
0.03
0.06
0.02
0.03
0.06
0.02
0.03
0.06
0.02
0.03

Voici les méthodes complètes:

private void convertJSON(String jsonString) throws IllegalArgumentException, IllegalAccessException {
    Gson gson = new Gson();
    Type data = new TypeToken<ArrayList<MyObject>>(){}.getType();
    List<MyObject> fhd = gson.fromJson(jsonString, data);
    for(MyObject current : fhd){
        printIt(current);
    }
}

public void printIt(MyObject data) throws IllegalArgumentException, IllegalAccessException{
    for(Field field : data.getClass().getDeclaredFields()){
        Object value = field.get(data);
        System.out.println(value);       
    }
}
GBlodgett:

Vous pouvez utiliser la réflexion pour ce faire:

Field[] fields = games.getClass().getDeclaredFields();

for(Field field: fields) {
    //do stuff
}

getDeclaredFields():

Renvoie un tableau d'objets champs reflétant tous les champs déclarés par la classe ou de l'interface représentée par cet objet de classe. Cela inclut l'accès du public, protégé, par défaut (package), et des champs privés, mais exclut les champs hérité.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=201204&siteId=1
conseillé
Classement