jsonx 1.0.5 jsonx: ^1.0.5 copied to clipboard
An extended JSON library that supports the encoding and decoding of arbitrary objects.
Beyond Primitives, Lists, and Maps #
jsonx
is an extended JSON library that supports the encoding and decoding of
arbitrary objects.jsonx
* can decode a JSON string into an*real object**
which gets type checking and code autocompletion support, or encode an arbitrary
object into a JSON string.
Decode a JSON String #
decode(String text, {reviver(key, value), Type type});
Decodes the JSON string text
given the optional type type
.
The optional reviver
function is called once for each object or list
property that has been parsed during decoding. The key
argument is either
the integer list index for a list property, the map string for object
properties, or null
for the final result.
The default reviver
(when not provided) is the identity function.
The optional type
parameter specifies the type to which text
should be
decoded. Since Dart doesn't allow passing a generic type as an argument, one must
create an instance of that generic type and pass the instance's runtimeType
as the value of type
.
If type
is omitted, this method is equivalent to [JSON.decode] in
dart:convert library.
Example:
class Person {
String name;
int age;
}
Person p = decode('{ "name": "Man", "age": 20 }', type: Person);
print(p.name);
List<int> list = decode('[1,2,3]', type: <int>[].runtimeType);
Encode an Object #
String encode(object)
Encodes object
as a JSON string.
The encoding happens as below:
- Tries to encode
object
directly - If (1) fails, tries to call
object.toJson()
to convertobject
into an encodable value - If (2) fails, tries to use mirrors to convert
object
into en encodable value
Example:
class Person {
Person(this.name, this.age);
String name;
int age;
}
var p = new Person('kin', 20);
print(encode(p));
Contact #
For any issue or feedback, please contact me at Man Hoang (jolleekin@outlook.com).