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.

Flutter, ¿cómo puedo adentrarme más en el archivo JSON?

Quiero adentrarme más en el archivo JSON, ¿qué necesito cambiar en el código?

Porque necesito ir más profundo en los datos -> recursos -> elementos -> título

Mi JSON:

{
“status”:”ACTUALIZACIÓN”,
“data”:{
“version”:”2″,
“modDate”:”2021-12-22T17:33:59+0100″,
“languages”:[
“DE”,
“EN”
],
“mapmarker”:[

  ],
  "resources":[
     {
        "id":241,
        "type":"imagen",
        "items":[
           {
              "lang":"DE",
              "title":"Laboratorio",
              "file":"uploads\/",
              "size":1923217,
              "modDate":"2019-02-28T18:07:46+0100"
           },
           {
              "lang":"EN",
              "title":"Laboratorio de Fausto",
              "file":"uploads\/",
              "size":1923217,
              "modDate":"2019-02-28T18:07:46+0100"
           }
        ]
     },
  ]

}
}

Mi código actual no funciona:

Future getDaten() async {
final response =
await http.get(Uri.parse(“https://blabla”));

final extractedData = json.decode(response.body) as Map<string, dynamic=””>;

var deviceData = extractedData[“data”] as Map<string, dynamic=””>;

var deviceData2 = deviceData[“resources”] as Map<string, dynamic=””>;

deviceData[“items”].forEach((e)=>print(e[“text”]));

}

Mi error actual:

Unhandled Exception: type ‘List‘ is not a subtype of type ‘Map<string, dynamic=””>’ in type cast

Solo puedo llegar a los datos -> recursos -> elementos y luego solo obtengo cadenas de texto como esta:

[{lang: DE, title: Schmuck, Uhren und Spiele, file: uploads/Spiele.JPG, size: 774265, modDate: 2021-12-13T16:04:25+0100}]</string,></string,></string,></string,>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para profundizar en el archivo JSON y acceder al campo “title” bajo “items”, debes realizar algunos cambios en tu código.

    En primer lugar, el tipo de “deviceData2” debería ser una lista de Mapas, no solo un Mapa. Por lo tanto, cambia esta línea:

    var deviceData2 = deviceData["resources"] as Map<string, dynamic="">;
    

    a

    List<><string, dynamic="">> deviceData2 = deviceData["resources"].cast<><string, dynamic="">>();
    

    Esto convertirá el campo “resources” en una lista de Mapas.

    Después, puedes iterar a través de esta lista y acceder al campo “items”, que también es una lista. Luego, puedes iterar a través de esta lista y acceder al campo “title” de cada elemento. Aquí tienes el código actualizado:

    Future<void> getDaten() async {
      final response = await http.get(Uri.parse("https://blabla"));
    
      final extractedData = json.decode(response.body) as Map<string, dynamic="">;
    
      var deviceData = extractedData["data"] as Map<string, dynamic="">;
    
      List<><string, dynamic="">> deviceData2 = deviceData["resources"].cast<><string, dynamic="">>();
    
      deviceData2.forEach((resource) {
        List<><string, dynamic="">> items = resource["items"].cast<><string, dynamic="">>();
        items.forEach((item) {
          print(item["title"]);
        });
      });
    }
    

    Este código iterará a través de cada recurso, accederá a su lista de elementos e imprimirá el campo “title” de cada elemento.</string,></string,></string,></string,></string,></string,></string,></string,></string,>

Comments are closed.