json_serializer

Last updated:

0 purchases

json_serializer Image
json_serializer Images
Add to Cart

Description:

json serializer

JSON Serializer #
A versatile Dart package for effortless JSON serialization and deserialization without the need for
code generation or reflection.

Getting Started #
To get started, simply import the json_serializer package:
import 'package:json_serializer/json_serializer.dart';
copied to clipboard
JSON Deserialization #
Suppose you have the following Dart classes:
enum Gender { male, female }

class Person {
final String name;
final Gender gender;
final Address address;

Person({required this.name, required this.gender, required this.address});
}

class Address {
final String street;
final String city;

Address({required this.street, required this.city});
}
copied to clipboard
You can deserialize JSON data into these classes as follows:
main() {
// Define user-defined types for successful deserialization
JsonSerializer.options = JsonSerializerOptions(types: [
UserType<Person>(Person.new),
UserType<Address>(Address.new),
EnumType<Gender>(Gender.values),
]);

var json =
'{"name":"John","gender":"male","address":{"street":"123 Main St","city":"Sampletown"}}';

var person = deserialize<Person>(json);

print('Name: ${person.name}');
print('Gender: ${person.gender.name}');
print('Street: ${person.address.street}');
print('City: ${person.address.city}');
}
copied to clipboard
Note that you should use JsonSerializerOptions to register all of your referenced classes or
enums.
Serialization #
To serialize, all your referenced classes should implement the Serializable interface, which
requires an implementation of toMap, a simple map of key and value properties.
class Person implements Serializable {
final String name;
final Gender gender;
final Address address;

Person({required this.name, required this.gender, required this.address});

@override
Map<String, dynamic> toMap() {
return {'name': name, 'gender': gender, 'address': address};
}
}

class Address implements Serializable {
final String street;
final String city;

Address({required this.street, required this.city});

@override
Map<String, dynamic> toMap() {
return {'street': street, 'city': city};
}
}
copied to clipboard
You can then easily serialize objects:
print(serialize(person));
// {"name":"John","gender":"male","address":{"street":"123 Main St","city":"Sampletown"}}
copied to clipboard
License #
This library is licensed under the BSD 3-Clause License. Feel free to use it and
contribute to its development.

Made with ❤️ by Edson Bonfim

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.