Código utilizado:
jObj = new JSONObject(json);
newJSONString = jObj.getString("payload");
JArray = new JSONArray(newJSONString);
Esto es lo que parece JArray:
[{ "06:30:00": { "color": "gris", "time_color": "negro"}, "06:45:00": { "color": "gris", "time_color":" negro"}}]
Ahora quiero bucle a través de los tiempos recibidas e imprimir su color, la forma de hacer esto?
Lo que he intentado:
for (int i = 0; i < JArray.length(); ++i) {
JSONObject rec = null;
try {
rec = JArray.getJSONObject(i);
} catch (JSONException e) {
e.printStackTrace();
}
android.util.Log.e("print row:", String.valueOf(rec));
}
Esto sólo me da este resultado:
{ "06:30:00": { "color": "gris", "time_color": "negro"}, "06:45:00": { "color": "gris", "time_color": "negro "}}
Usted está recibiendo esta salida ya que su matriz JSON contiene sólo un objeto JSON que es - { "06:30:00": { "color": "gris", "time_color": "negro"} ", 06:45:00 ": {" color ":" gris", "time_color": "negro"}}
Antes de responder a su pregunta, le recomiendo que vaya a través de la sintaxis JSON. Se le ayudará a entender su pregunta y contesta con eficacia.
Volviendo a su pregunta, con el fin de obtener el campo "color" de su JSON anidada:
Recorrer a través de teclas en su objeto JSON. En su caso se trata de - "06:30:00", "06:45:00". Puede google a cabo solución para recorrer a través de las teclas objeto JSON en Java.
Obtener objeto anidado asociado con la clave dada (tiempo) - se puede utilizar el método getJSONObject () proporcionado por la biblioteca JSON para esto.
Obtener campo "color" de objeto JSON - se puede utilizar optstring () o getString () métodos proporcionados por la biblioteca JSON para esto- dependiendo de si la cadena es obligatorio u opcional.
Aquí está la solución de trabajo en Java a su problema:
public static void getColor(JSONObject payloadObject) {
try {
JSONArray keys = payloadObject.names();
for (int i = 0; i < keys.length(); i++) {
String key = keys.getString(i); // Here's your key
JSONObject value = payloadObject.getJSONObject(key); // Here's your value - nested JSON object
String color = value.getString("color");
System.out.println(color);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
Tenga en cuenta, se considera que el objeto que recibe como carga útil es un objeto JSON.
Espero que esto ayude.
Gracias.