Dart:
Trabajando con JSON

Cómo hacerlo:

Dart provee soporte incorporado para JSON con la biblioteca dart:convert, lo que hace que codificar y decodificar JSON sea directo. A continuación, se muestran ejemplos que destacan operaciones básicas:

Analizando Cadena JSON a Objeto Dart:

import 'dart:convert';

void main() {
  // Ejemplo de cadena JSON
  String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
  
  // Decodificando JSON a Mapa Dart
  Map<String, dynamic> user = jsonDecode(jsonString);
  
  print('Hola, ${user['name']}! Tienes ${user['age']} años.');
  // Salida: Hola, John! Tienes 30 años.
}

Codificando Objeto Dart a Cadena JSON:

import 'dart:convert';

void main() {
  // Ejemplo de objeto Dart
  Map<String, dynamic> user = {
    'name': 'Jane',
    'age': 25,
    'email': '[email protected]'
  };
  
  // Codificando Mapa Dart a JSON
  String jsonString = jsonEncode(user);
  
  print(jsonString);
  // Salida: {"name":"Jane","age":25,"email":"[email protected]"}
}

Usando json_serializable para Modelos Complejos: Para modelos de datos complejos, la serialización manual puede ser engorrosa. El paquete json_serializable automatiza este proceso. Requiere una configuración adicional, incluyendo agregar dependencias a tu pubspec.yaml y crear archivos de construcción. Después de la configuración, puedes usarlo de la siguiente manera:

  1. Definir un modelo con anotaciones:
import 'package:json_annotation/json_annotation.dart';

part 'user.g.dart';

@JsonSerializable()
class User {
  String name;
  int age;
  String email;
  
  User({required this.name, required this.age, required this.email});
  
  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
  Map<String, dynamic> toJson() => _$UserToJson(this);
}
  1. Generar la infraestructura de serialización: Usa el comando del creador de compilaciones para generar el archivo user.g.dart:
flutter pub run build_runner build
  1. Usar tu modelo:
void main() {
  // Analizando JSON a Usuario
  Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
  User user = User.fromJson(userMap);
  
  print('Usuario: ${user.name}, Edad: ${user.age}');
  // Salida: Usuario: John, Edad: 30

  // Convirtiendo Usuario de vuelta a JSON
  String jsonString = jsonEncode(user.toJson());
  print(jsonString);
  // Salida: {"name":"John","age":30,"email":"[email protected]"}
}

Estos ejemplos ilustran interacciones básicas y avanzadas con JSON en Dart, empoderando a los desarrolladores para manejar tareas de serialización de datos en sus aplicaciones sin problemas.