temporal_json_converter 0.0.2 copy "temporal_json_converter: ^0.0.2" to clipboard
temporal_json_converter: ^0.0.2 copied to clipboard

JSON converters for the Temporal date/time types. Provides a TemporalJsonConverter class with static const converters for use with json_serializable (@TemporalJsonConverter.plainDate, etc.).

temporal_json_converter #

json_serializable converters for every type in the temporal package.

Getting started #

dependencies:
  temporal: ^0.1.1
  temporal_json_converter: ^0.1.0
  json_annotation: ^4.9.0

dev_dependencies:
  build_runner: ^2.0.0
  json_serializable: ^6.0.0

Usage #

Annotate fields with the static converter that matches the type:

import 'package:json_annotation/json_annotation.dart';
import 'package:temporal/temporal.dart';
import 'package:temporal_json_converter/temporal_json_converter.dart';

part 'event.g.dart';

@JsonSerializable()
class Event {
  @TemporalJsonConverter.plainDate
  final PlainDate date;

  @TemporalJsonConverter.plainTime
  final PlainTime time;

  @TemporalJsonConverter.zonedDateTime
  final ZonedDateTime start;

  @TemporalJsonConverter.instant
  final Instant createdAt;

  @TemporalJsonConverter.duration
  final TemporalDuration length;

  const Event({
    required this.date,
    required this.time,
    required this.start,
    required this.createdAt,
    required this.length,
  });

  factory Event.fromJson(Map<String, dynamic> json) => _$EventFromJson(json);
  Map<String, dynamic> toJson() => _$EventToJson(this);
}

All converters serialize to and from ISO 8601 strings — the canonical wire format for each type:

Converter Dart type Example JSON value
TemporalJsonConverter.plainDate PlainDate "2024-03-15"
TemporalJsonConverter.plainTime PlainTime "14:30:00"
TemporalJsonConverter.plainDateTime PlainDateTime "2024-03-15T14:30:00"
TemporalJsonConverter.zonedDateTime ZonedDateTime "2024-03-15T14:30:00[America/New_York]"
TemporalJsonConverter.instant Instant "2024-03-15T19:30:00Z"
TemporalJsonConverter.duration TemporalDuration "P1Y2M3DT4H"
TemporalJsonConverter.plainYearMonth PlainYearMonth "2024-03"
TemporalJsonConverter.plainMonthDay PlainMonthDay "--03-15"

The converters can also be used directly without json_serializable:

const converter = TemporalJsonConverter.plainDate;

final date = converter.fromJson('2024-03-15');   // PlainDate
final json = converter.toJson(date);             // '2024-03-15'

Additional information #

0
likes
130
points
5
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

JSON converters for the Temporal date/time types. Provides a TemporalJsonConverter class with static const converters for use with json_serializable (@TemporalJsonConverter.plainDate, etc.).

Repository (GitHub)
View/report issues

Topics

#date #time #temporal #datetime #json

License

MIT (license)

Dependencies

json_annotation, temporal

More

Packages that depend on temporal_json_converter