BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Noda Time 1.2リリース,XMLとJSONのシリアライゼーションとテキスト変換をサポート

Noda Time 1.2リリース,XMLとJSONのシリアライゼーションとテキスト変換をサポート

原文(投稿日:2013/11/27)へのリンク

Noda Time 1.2がリリースされた。XMLとバイナリのシリアライゼーションとテキストフォーマッティングに加えて,JSONのシリアライゼーションを扱うアセンブリをオプションでサポートする。Duration, OffsetDateTime, ZonedDateTimeといった型のフォーマットおよび解析,Interval.Contains(), ZonedDateTime.Calendar()などメソッドの他,いくつかのバグも修正された。

今回のリリースではNodaTime.Serialization.JsonNetアセンブリがサポートされる。Json.NET 4.5.11を使って実装された,モバイルとデスクトップいずれのプラットフォームでも利用可能なアセンブリだ。JsonSerialierとJsonSerializerSettingsにはConfigureForNodaTimeという拡張メソッドが提供されている。またNodaConvertersには,各コンバータ用にpublicでstaticな読み取り専用フィールドが用意された。これらはすべて不変(immutable)だが,NodaPatternConverterを使ったパターンから独自コンバータを容易に作成できる。

Noda Time 1.2ではAPIにもいくつか変更が加えられて,DurationPattern, OffsetDateTimePattern, ZonedDateTimePatternなどの新しいクラスが導入された。それぞれがDuration, OffsetDateTime, ZonedDataTimeの解析パターンを表している。GeneralIsoPattern, BclRoundtripPattern, FullRoundtripPatternなど,o/Oやr,あるいはsパターンへのプログラムからのアクセスを提供する,新しいプロパティも含まれている。また今回のリリースではDateTimeZoneNotFoundExceptionやCalendarSystem,あるいはInvalidNodaDataExceptionといったクラスがSealedされた。

Noda Time 1.2では,Instant, OffsetDateTime, ZonedDateTime, LocalDateTime, LocalDate, LocalTime, Offset, Interval, Duration, PeriodBuilderが IXmlSerializableを実装していて,シリアライズ可能になっている。さらにISerializableも実装しているので, [Serializable] 属性を使用すれば,BinaryFormatterを使用したシリアライズも可能だ。

最新リリースにはInstantPatternも含まれている。WithMinMaxLabels()メソッドは,Insitantの最小および最大値のフォーマットに用いるテキストを置き換えることができる。また,新しいEra.AnnoMartyrumは,それまであったAnnoMartyrmの名称誤りを置き換えるものだ。さらにはInterval.Contains(), ZonedDateTime.Calendar, ZonedDateTime.GetZoneInterval()といったメソッドに加えて,GetValueOrThrow()メソッドによってスローされる例外に直接アクセスするためのParseResult.Exceptionが追加されている。

Noda Time 1.2では,Period.Between() がうるう年付近の月末にコールされると正と負の値を混在した結果を返すバグ,およびlong,MaxValueを越える数のチックでPeriodを作成したときに発生する不正なオーバーフローがフィックスされている。また既存のInstantパターンn, g, およびdの大文字エイリアスが,今回のリリースで削除されている。

この記事に星をつける

おすすめ度
スタイル

BT