es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

API de Flutter: ¿cómo puedo obtener los datos de los dispositivos en este JSON utilizando el complemento http?

Hola chicos, quiero saber cómo puedo obtener los datos de los dispositivos en este archivo JSON a continuación.

Mi JSON:

{
   "status":"UPDATE",
   "data":{
      "version":"2",
      "modDate":"2021-12-22T17:33:59+0100",
      "languages":[
         "DE",
         "EN"
      ],
      "devices":[
         {
            "id":126,
            "uuid":"b9407f30-f5f8-466e-aff9-25556b57fe6d",
            "ma":600,
            "mi":33815
         },
         {
            "id":129,
            "uuid":"b9407f30-f5f8-466e-aff9-25556b57fe6d",
            "ma":600,
            "mi":28664
         }
      ]
   }
}

Mi método:

Future<void> getDaten() async {
  final response =
      await http.get(Uri.parse("https://blablabla.de/index.php?id=7&version=2"));

  final extractedData = json.decode(response.body) as Map<string, dynamic="">;
  print(extractedData);
  extractedData.forEach((id, data) {
    print(id);
    print(data["devices"]);
  });
}

He intentado con extractedData["data"] y algo más, pero no funciona.

En este código actual, obtengo este error:

E/flutter (19705): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: type 'String' is not a subtype of type 'int' of 'index'</string,>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener los datos del array “devices” en el archivo JSON, puedes acceder a ellos utilizando el siguiente código:

    Future<void> getDevices() async {
      final response = await http.get(
          Uri.parse("https://blablabla.de/index.php?id=7&version=2"));
    
      final extractedData = json.decode(response.body) as Map<string, dynamic="">;
      final devices = extractedData['data']['devices'] as List<dynamic>;
    
      for (final device in devices) {
        final id = device['id'] as int;
        final uuid = device['uuid'] as String;
        final ma = device['ma'] as int;
        final mi = device['mi'] as int;
    
        // hacer algo con los datos del dispositivo
      }
    }
    

    En este código, primero usamos http.get para obtener el archivo JSON desde la URL. Luego decodificamos los datos JSON usando json.decode y extraemos el array “devices” accediendo al objeto “data”.

    Dado que el array “devices” contiene una lista de objetos, utilizamos as List<dynamic> para convertirlo al tipo correcto. Luego recorremos cada objeto de la lista y extraemos los datos relevantes utilizando las claves “id”, “uuid”, “ma” y “mi”.

    Luego puedes utilizar estos datos para interactuar con los dispositivos de alguna manera, como mostrarlos en una lista o enviarles comandos a través de una API.</string,>

Comments are closed.