JAVA obtener anidada objeto JSON / gama

DNC:

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 "}}

CodeYourBrain:

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:

  1. 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.

  2. Obtener objeto anidado asociado con la clave dada (tiempo) - se puede utilizar el método getJSONObject () proporcionado por la biblioteca JSON para esto.

  3. 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.

Supongo que te gusta

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