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:
- 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);
}
- 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
- 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.