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:

  1. 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);
}
  1. Generoi sarjoitusnäpellys: Käytä build runner -komentoa generoidaksesi user.g.dart-tiedoston:
flutter pub run build_runner build
  1. 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.