Lazo a través de un objeto y obtener el valor de todas las variables de las TI

Marcus Holden:

Esto puede ser muy simple y es apenas yo eludir, y tengo la búsqueda de una respuesta, pero no son sólo respuestas JS que puedo encontrar. He aquí mi arreglo:

Estoy usando Gson para analizar una matriz de objetos JSON a POJO. I a continuación, utilizando una for-looppara enviar cada uno de los objetos analiza a un método para su procesamiento. Me parece que no puede encontrar una forma de bucle a través de los objetos individuales y obtener los valores contenidos dentro.

Por ejemplo:

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. 


}

Se hace esto con facilidad? He estado tratando desde hace un tiempo y me parece que no puede conseguir que funcione. Puedo agarrar de forma individual con bastante facilidad mediante el uso de:

myObj.thing1

Pero tendrá que ser hecho en un bucle, ya que hay un montón de valores que entra.

ACTUALIZACIÓN: Esto casi funciona, pero se imprime todo el objeto y luego imprime los valores de los objetos individuales. ¿Cómo puedo conseguir que se acaba de imprimir los valores individuales sin principio todo la impresión?

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

Salida:

    [{"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

Éstos son los métodos completos:

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:

Puede utilizar la reflexión para hacer esto:

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

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

getDeclaredFields():

Devuelve una matriz de objetos de campo que refleja todos los campos declarados por la clase o interfaz que representa este objeto Class. Esto incluye protegido, el acceso público, por defecto (el paquete), y los campos privados, pero excluye los campos heredado.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=201206&siteId=1
Recomendado
Clasificación