Dart:
Lavorare con JSON
Come fare:
Dart offre supporto integrato per JSON con la libreria dart:convert
, rendendo semplice codificare e decodificare JSON. Di seguito sono riportati esempi che mostrano le operazioni di base:
Analisi di Stringa JSON in Oggetto Dart:
import 'dart:convert';
void main() {
// Stringa JSON di esempio
String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
// Decodifica di JSON in Mappa Dart
Map<String, dynamic> user = jsonDecode(jsonString);
print('Ciao, ${user['name']}! Hai ${user['age']} anni.');
// Output: Ciao, John! Hai 30 anni.
}
Codifica di Oggetto Dart in Stringa JSON:
import 'dart:convert';
void main() {
// Oggetto Dart di esempio
Map<String, dynamic> user = {
'name': 'Jane',
'age': 25,
'email': '[email protected]'
};
// Codifica di Mappa Dart in JSON
String jsonString = jsonEncode(user);
print(jsonString);
// Output: {"name":"Jane","age":25,"email":"[email protected]"}
}
Uso di json_serializable
per Modelli Complessi:
Per modelli di dati complessi, la serializzazione manuale può essere onerosa. Il pacchetto json_serializable
automatizza questo processo. Richiede una configurazione aggiuntiva, inclusa l’aggiunta di dipendenze nel proprio pubspec.yaml
e la creazione di file di compilazione. Dopo la configurazione, è possibile usarlo come segue:
- Definire un modello con annotazioni:
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);
}
- Generare la struttura di serializzazione:
Utilizzare il comando build runner per generare il file
user.g.dart
:
flutter pub run build_runner build
- Usare il proprio modello:
void main() {
// Analisi di JSON in Utente
Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
User user = User.fromJson(userMap);
print('Utente: ${user.name}, Età: ${user.age}');
// Output: Utente: John, Età: 30
// Conversione dell'Utente di nuovo in JSON
String jsonString = jsonEncode(user.toJson());
print(jsonString);
// Output: {"name":"John","age":30,"email":"[email protected]"}
}
Questi esempi illustrano le interazioni di base e avanzate con JSON in Dart, permettendo agli sviluppatori di gestire compiti di serializzazione dei dati nelle loro applicazioni senza problemi.