Skip to main content
Herramienta online para convertir objetos JSON a clases DART (JSON to Dart)

[quicktype] Herramienta online para convertir objetos JSON a clases DART (JSON to Dart)

Quicktype es una herramienta online fácil y simple de usar para convertir objetos JSON a Clases en Dart(Flutter) u otros lenguajes. No solo convierte a clases, sino que genera funciones como: toJson, toMap, copyWith y más.

Ejemplo de objeto JSON:

{
	"status": 200,
	"description": "Success",
	"data": {
		"username": "admin",
		"token": "X1.CONTENT.X3",
		"tokenType": "Bearer",
		"tokenExpiration": "2022-12-24 06:26:52",
		"roles": [
			{
				"id": 2,
				"code": "COMMON_USER",
				"description": "Usuario"
			}
		]
	}
}

Ejemplo de código en Dart:

import 'package:meta/meta.dart';
import 'dart:convert';

class SuccessDto {
    SuccessDto({
        required this.status,
        required this.description,
        required this.data,
    });

    final int status;
    final String description;
    final Data data;

    factory SuccessDto.fromJson(String str) => SuccessDto.fromMap(json.decode(str));

    String toJson() => json.encode(toMap());

    factory SuccessDto.fromMap(Map<String, dynamic> json) => SuccessDto(
        status: json["status"],
        description: json["description"],
        data: Data.fromMap(json["data"]),
    );

    Map<String, dynamic> toMap() => {
        "status": status,
        "description": description,
        "data": data.toMap(),
    };
}

class Data {
    Data({
        required this.username,
        required this.token,
        required this.tokenType,
        required this.tokenExpiration,
        required this.roles,
    });

    final String username;
    final String token;
    final String tokenType;
    final DateTime tokenExpiration;
    final List<Role> roles;

    factory Data.fromJson(String str) => Data.fromMap(json.decode(str));

    String toJson() => json.encode(toMap());

    factory Data.fromMap(Map<String, dynamic> json) => Data(
        username: json["username"],
        token: json["token"],
        tokenType: json["tokenType"],
        tokenExpiration: DateTime.parse(json["tokenExpiration"]),
        roles: List<Role>.from(json["roles"].map((x) => Role.fromMap(x))),
    );

    Map<String, dynamic> toMap() => {
        "username": username,
        "token": token,
        "tokenType": tokenType,
        "tokenExpiration": tokenExpiration.toIso8601String(),
        "roles": List<dynamic>.from(roles.map((x) => x.toMap())),
    };
}

class Role {
    Role({
        required this.id,
        required this.code,
        required this.description,
    });

    final int id;
    final String code;
    final String description;

    factory Role.fromJson(String str) => Role.fromMap(json.decode(str));

    String toJson() => json.encode(toMap());

    factory Role.fromMap(Map<String, dynamic> json) => Role(
        id: json["id"],
        code: json["code"],
        description: json["description"],
    );

    Map<String, dynamic> toMap() => {
        "id": id,
        "code": code,
        "description": description,
    };
}

*Eliminar el símbolo de arroba, versiones actuales de dart y flutter ya no lo soportan.

Deja un comentario

A %d blogueros les gusta esto: