Skip to content

Manual JSON Serialization: Use Code Generation Instead #22

@ajaxspace

Description

@ajaxspace

Problem:
The Agent model implements manual fromJson deserialization:

factory Agent.fromJson(Map<String, dynamic> json) {
  return Agent(
    id: json['id'] as String,
    ...
    tags: List<String>.from(json['tags']),
    ...
  );
}

Issues:

  • Prone to human error and type mismatches
  • Lacks compile-time safety
  • Harder to maintain and refactor (e.g. when field names/types change)
  • Duplicates boilerplate across models

✅ Recommendation: Use JSON Serialization Code Generation

Use json_serializable to generate fromJson/toJson implementations automatically.

Step 1 – Annotate your class:

import 'package:json_annotation/json_annotation.dart';

part 'agent.g.dart';

@JsonSerializable()
class Agent {
  final String id;
  final String name;
  final String description;
  final AgentStatus status;
  final List<String> tags;
  final String? avatarUrl;
  final DateTime createdAt;
  final DateTime? lastActive;

  const Ag

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions