jsonTreeDecode method
Converts the argument (a JSON tree) into an instance of T
.
Valid nodes in JSON trees
The method takes a tree, where nodes are instances of:
null
bool
double
String
List
, where items are valid nodes.Map<String,Object?>
, where keys are strings and values are valid nodes.
Errors
Thrown errors are subclasses of GraphNodeError, which describes which node in the input graph caused the error.
Examples
import 'package:kind/kind.dart';
void main() {
final json = '2020-12-31';
final kind = DateKind();
kind.jsonTreeDecode(json); // --> Date(2020, 12, 31)
}
Implementing this method
Implementations must use context
to:
- Serialize other values.
- Construct errors.
If context
is null, implementations must construct one with
JsonDecodingContext().
Implementation
@override
int jsonTreeDecode(Object? value, {JsonDecodingContext? context}) {
if (value is num) {
return value.toInt();
} else {
context ??= JsonDecodingContext();
throw context.newGraphNodeError(
value: json,
reason: 'Expected JSON number.',
);
}
}