Last updated:
0 purchases
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
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.