Dart:
Työskentely JSON:n kanssa
Miten:
Dart tarjoaa sisäänrakennetun tuen JSONille dart:convert
-kirjaston avulla, mikä tekee JSONin koodaamisesta ja dekoodaamisesta suoraviivaista. Alla on esimerkkejä, jotka esittelevät perustoimintoja:
JSON-merkkijonon jäsentäminen Dart-olioksi:
import 'dart:convert';
void main() {
// Esimerkki JSON-merkkijonosta
String jsonString = '{"name": "John", "age": 30, "email": "[email protected]"}';
// JSONin dekoodaus Dart Mapiksi
Map<String, dynamic> user = jsonDecode(jsonString);
print('Hei, ${user['name']}! Olet ${user['age']} vuotta vanha.');
// Tuloste: Hei, John! Olet 30 vuotta vanha.
}
Dart-olion koodaaminen JSON-merkkijonoksi:
import 'dart:convert';
void main() {
// Esimerkki Dart-oliosta
Map<String, dynamic> user = {
'name': 'Jane',
'age': 25,
'email': '[email protected]'
};
// Dart Mapin koodaus JSONiksi
String jsonString = jsonEncode(user);
print(jsonString);
// Tuloste: {"name":"Jane","age":25,"email":"[email protected]"}
}
json_serializable
-paketin käyttö monimutkaisissa malleissa:
Monimutkaisten datamallien manuaalinen sarjoittaminen voi olla työlästä. json_serializable
-paketti automatisoi tämän prosessin. Se vaatii lisäasetuksia, mukaan lukien riippuvuuksien lisäämisen pubspec.yaml
-tiedostooon ja rakennustiedostojen luomisen. Asetusten jälkeen voit käyttää sitä seuraavasti:
- Määrittele malli annotaatioilla:
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);
}
- Generoi sarjoitusnäpellys:
Käytä build runner -komentoa generoidaksesi
user.g.dart
-tiedoston:
flutter pub run build_runner build
- Käytä malliasi:
void main() {
// JSONin jäsentäminen Useriksi
Map userMap = jsonDecode('{"name": "John", "age": 30, "email": "[email protected]"}');
User user = User.fromJson(userMap);
print('Käyttäjä: ${user.name}, Ikä: ${user.age}');
// Tuloste: Käyttäjä: John, Ikä: 30
// Muunna User takaisin JSONiksi
String jsonString = jsonEncode(user.toJson());
print(jsonString);
// Tuloste: {"name":"John","age":30,"email":"[email protected]"}
}
Nämä esimerkit havainnollistavat perus- ja edistyneitä JSON-vuorovaikutuksia Dartissa, antaen kehittäjille mahdollisuuden käsitellä tiedon sarjoitustehtäviä sovelluksissaan saumattomasti.