json_object_mapper
A simple and easy way to map Objects from JSON and to Map with support for Dart Native and Dart Web.
Main features:
-
Works with simple Objects: no method implementation needed.
-
Compatible with Web (JS) and Native (VM) platforms.
-
No @annotations or code generation.
-
Only uses Mirrors if it's available in the platform (transparent load).
JSONTransformer
You can use simple and easy JSONTransformer
patterns to transform a JSON tree.
This helps to integrate JSON trees of 3rd part with your code, UI and Entities.
Usage
JSONObject
A simple JSON Object mapping example:
import 'package:json_object_mapper/json_object_mapper.dart';
class User extends JSONObject {
String username ;
String email ;
User.fromFields(this.username, this.email);
User.fromJson(String json) {
initializeFromJson(json) ;
}
@override
String toString() {
return 'User{username: $username, email: $email}' ;
}
}
main() {
User user1 = User.fromFields("joe", "joe@mail.com") ;
print("User[1]: $user1");
// User[1]: User{username: joe, email: joe@mail.com}
print(user1.toJson());
// {"username":"joe","email":"joe@mail.com"}
User user2 = User.fromJson( '{"username":"joe2","email":"joe2@mail.com"}' ) ;
print("User[2]: $user2");
// User[2]: User{username: joe2, email: joe2@mail.com}
print(user2.toJson());
// {"username":"joe2","email":"joe2@mail.com"}
}
JSONTransformer
A simple JSON tree transformation example:
var json = {
'result': [
{'id': 1, 'name': 'a', 'group': 'x'},
{'id': 2, 'name': 'b', 'group': 'y'},
{'id': 3, 'name': 'c', 'group': 'z'},
]
};
var transformer = JSONTransformer.parse('{result}.mapEntry(name,id).asMap()');
var json2 = transformer.transform(json);
/// json2 = {'a': 1, 'b': 2, 'c': 3}
JSONTransformer Operations
{"$key"}
: convertsnode
to a$key
value ofnode as Map
.[$index]
: convertsnode
to a$index
value ofnode as List
.asMap()
: convertsnode
to aMap
.asList()
: convertsnode
to aList
.asString($delimiter)
: convertsnode
to aString
, using optional$delimiter
fornode List
.mapEntry($key,$value)
: convertsnode
ornode.entries
to aMapEntry($key, $value)
.split($delimiter,$limit?)
: convertsnode
ornode.entries
splitting into aList
of parts, using$delimiter as RegExp
and optional$limit
.uc()
: convertsnode
ornode.entries
to an Upper CaseString
.lc()
: convertsnode
ornode.entries
to a Lower CaseString
.trim()
: convertsnode
ornode.entries
to a TrimmedString
.encodeJson($withIdent)
: convertsnode
encoding to a JSONString
, using optional$withIdent as bool
.decodeJson()
: convertsnode
ornode.entries
decoding to a JSON tree.
Features and bugs
Please file feature requests and bugs at the issue tracker.
Author
Graciliano M. Passos: gmpassos@GitHub.
License
Dart free & open-source license.