json_extension 0.4.1
json_extension: ^0.4.1 copied to clipboard
Uses class_extensions and json_serializable to generate methods for object serialization from/to json map/string.
Description #
Uses class_extensions and json_serializable to generate methods for object serialization from/to json map/string.
See also withers_extension, to_string_extension
Tutorial #
-
We need a class to generate json serialization methods for.
${PROJECT_ROOT}/lib/model.dartimport 'package:meta/meta.dart'; @immutable class SomeValueClass { final String strVal; final int intVal; } -
For json serialization to work you need to add some boiler plate:
import 'dart:convert';part 'model.g.dart';- annotation
@Json() - mixin
_$SomeValueClass - all args constructor
SomeValueClass(this.strVal, this.intVal); - factories
SomeValueClass.fromJson(Map<String, dynamic> json)andSomeValueClass.fromJsonString(String json)
${PROJECT_ROOT}/lib/model.dartimport 'dart:convert'; import 'package:json_extension_annotations/annotations.dart'; import 'package:meta/meta.dart'; part 'model.g.dart'; @Json() @immutable class SomeValueClass with _$SomeValueClass { final String strVal; final int intVal; SomeValueClass(this.strVal, this.intVal); factory SomeValueClass.fromJson(Map<String, dynamic> json) => _$SomeValueClass.fromJson(json); factory SomeValueClass.fromJsonString(String json) => _$SomeValueClass.fromJsonString(json); } -
Configure code generation. More info at build.
${PROJECT_ROOT}/build.yamltargets: $default: builders: class_extensions: generate_for: - lib/*.dart -
Add dependencies.
${PROJECT_ROOT}/pubspec.yamlname: example dependencies: json_extension_annotations: ^0.2.0 dev_dependencies: build_runner: ^1.0.0 json_extension: ^0.2.0 json_serializable: ^3.2.3 -
Run code generation:
pub run build_runner build. File${PROJECT_ROOT}/lib/model.g.dartshould be created. -
If everything goes well you should be able to use json.
${PROJECT_ROOT}/bin/main.dartimport 'package:example/model.dart'; void main() { var some = SomeValueClass("some", 0); var jsonMap = some.toJson(); var someFromMap = SomeValueClass.fromJson(jsonMap); var jsonString = some.toJsonString(); var someFromString = SomeValueClass.fromJsonString(jsonString); } -
You can also see the example.