Dart:
Trabalhando com JSON
Como fazer:
Dart oferece suporte integrado para JSON com a biblioteca dart:convert
, facilitando a codificação e decodificação de JSON. Abaixo estão exemplos que demonstram operações básicas:
Analisando String JSON para Objeto Dart:
import 'dart:convert';
void main() {
// Exemplo de string JSON
String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
// Decodificando JSON para Map Dart
Map<String, dynamic> user = jsonDecode(jsonString);
print('Olá, ${user['name']}! Você tem ${user['age']} anos.');
// Saída: Olá, John! Você tem 30 anos.
}
Codificando Objeto Dart para String JSON:
import 'dart:convert';
void main() {
// Exemplo de objeto Dart
Map<String, dynamic> user = {
'name': 'Jane',
'age': 25,
'email': '[email protected]'
};
// Codificando Map Dart para JSON
String jsonString = jsonEncode(user);
print(jsonString);
// Saída: {"name":"Jane","age":25,"email":"[email protected]"}
}
Usando json_serializable
para Modelos Complexos:
Para modelos de dados complexos, a serialização manual pode ser trabalhosa. O pacote json_serializable
automatiza esse processo. Requer configuração adicional, incluindo adicionar dependências ao seu pubspec.yaml
e criar arquivos de construção. Após a configuração, você pode usá-lo da seguinte forma:
- Defina um modelo com anotações:
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);
}
- Gere o código de serialização:
Use o comando do build runner para gerar o arquivo
user.g.dart
:
flutter pub run build_runner build
- Use seu modelo:
void main() {
// Analisando JSON para User
Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
User user = User.fromJson(userMap);
print('Usuário: ${user.name}, Idade: ${user.age}');
// Saída: Usuário: John, Idade: 30
// Convertendo User de volta para JSON
String jsonString = jsonEncode(user.toJson());
print(jsonString);
// Saída: {"name":"John","age":30,"email":"[email protected]"}
}
Esses exemplos ilustram interações básicas e avançadas com JSON em Dart, capacitando desenvolvedores a lidar com tarefas de serialização de dados em seus aplicativos de maneira contínua.