json_codable 0.2.0 copy "json_codable: ^0.2.0" to clipboard
json_codable: ^0.2.0 copied to clipboard

JSON parsing, validation, and schema generation.

example/example.dart

import 'dart:convert';

import 'package:json_codable/json_codable.dart';

class CreateUserDto {
  CreateUserDto.fromJson(JsonObject json)
    : name = json.string('name', rules: [.length(min: 2)]),
      email = json.string('email', rules: [.email()]),
      age = json.integerOrNull('age', rules: [.range(min: 18)]);

  static final Schema schema = JsonObject.schema(
    CreateUserDto.fromJson,
    title: 'CreateUserDto',
  );

  final String name;
  final String email;
  final int? age;
}

class UserDto implements ToJson {
  UserDto({
    required this.id,
    required this.name,
    required this.email,
  });

  final String id;
  final String name;
  final String email;

  @override
  Map<String, Object?> toJson() => {'id': id, 'name': name, 'email': email};
}

void main() {
  print('--- Schema Generation ---');
  print(CreateUserDto.schema);

  print('\n--- Parsing Valid JSON ---');
  const validJson = '{"name": "Ivan", "email": "ivan@example.com", "age": 25}';
  final validMap = jsonDecode(validJson) as Map<String, Object?>;
  final userPayload = JsonObject(validMap).parse(CreateUserDto.fromJson);
  print('Parsed user: ${userPayload.name} (${userPayload.email})');

  print('\n--- Serialization ---');
  final userDto = UserDto(
    id: '1',
    name: userPayload.name,
    email: userPayload.email,
  );
  print('JSON String: ${jsonEncode(userDto.toJson())}');

  print('\n--- Validation Errors ---');
  const invalidJson = '{"name": "A", "email": "not-an-email"}';
  final invalidMap = jsonDecode(invalidJson) as Map<String, Object?>;

  try {
    JsonObject(invalidMap).parse(CreateUserDto.fromJson);
  } on ValidationErrors catch (errors) {
    print('Validation failed:');
    print(errors.toJson());
  }
}
0
likes
150
points
183
downloads

Documentation

API reference

Publisher

verified publisherpusk.software

Weekly Downloads

JSON parsing, validation, and schema generation.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

equatable, json_schema_builder, meta

More

Packages that depend on json_codable