-
Notifications
You must be signed in to change notification settings - Fork 387
/
json_converters.dart
86 lines (60 loc) · 2.18 KB
/
json_converters.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:json_annotation/json_annotation.dart';
class GenericConverter<T> implements JsonConverter<T, Map<String, dynamic>> {
const GenericConverter();
@override
T fromJson(Map<String, dynamic> json) => null as T;
@override
Map<String, dynamic> toJson(T object) => {};
}
class TrivialNumber {
final int? value;
TrivialNumber(this.value);
}
class TrivialNumberConverter implements JsonConverter<TrivialNumber, int?> {
static const instance = TrivialNumberConverter();
const TrivialNumberConverter();
@override
TrivialNumber fromJson(int? json) => TrivialNumber(json);
@override
int? toJson(TrivialNumber? object) => object?.value;
}
class BigIntStringConverter implements JsonConverter<BigInt, String> {
const BigIntStringConverter();
@override
BigInt fromJson(String json) => BigInt.parse(json);
@override
String toJson(BigInt object) => object.toString();
}
const durationConverter = DurationMillisecondConverter();
class DurationMillisecondConverter implements JsonConverter<Duration?, int?> {
const DurationMillisecondConverter();
@override
Duration? fromJson(int? json) =>
json == null ? null : Duration(milliseconds: json);
@override
int? toJson(Duration? object) => object?.inMilliseconds;
}
class TrivialString {
TrivialString(this.value);
final String? value;
}
const trivialStringConverter = TrivialStringConverter();
class TrivialStringConverter implements JsonConverter<TrivialString?, String?> {
const TrivialStringConverter();
@override
TrivialString? fromJson(String? json) =>
json == null ? null : TrivialString(json);
@override
String? toJson(TrivialString? object) => object?.value;
}
class EpochDateTimeConverter implements JsonConverter<DateTime?, int?> {
const EpochDateTimeConverter();
@override
DateTime? fromJson(int? json) =>
json == null ? null : DateTime.fromMillisecondsSinceEpoch(json);
@override
int? toJson(DateTime? object) => object?.millisecondsSinceEpoch;
}