ingen084 / KyoshinMonitorLib

.NETから簡単に強震モニタを利用できるようにするライブラリ
MIT License
29 stars 4 forks source link

WebApi.GetEewInfoでの未発表時の扱いについて #4

Closed kichi2004 closed 5 years ago

kichi2004 commented 5 years ago

GetEewInfo実行時、指定時刻にEEWが未発表だった際、以下の例外が発生します。

Utf8Json.JsonParsingException: expected:'true | false', actual:'""', at offset:214
   場所 Utf8Json.JsonReader.ReadBoolean()
   場所 Utf8Json.Formatters.NullableBooleanFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   場所 Utf8Json.Formatters.KyoshinMonitorLib_ApiResult_WebApi_EewFormatter1.Deserialize(JsonReader& , IJsonFormatterResolver )
   場所 Utf8Json.JsonSerializer.Deserialize[T](Byte[] bytes, Int32 offset, IJsonFormatterResolver resolver)
   場所 Utf8Json.JsonSerializer.Deserialize[T](Byte[] bytes, IJsonFormatterResolver resolver)
   場所 Utf8Json.JsonSerializer.Deserialize[T](String json, IJsonFormatterResolver resolver)
   場所 Utf8Json.JsonSerializer.Deserialize[T](String json)
   場所 KyoshinMonitorLib.Api.<GetJsonObject>d__3`1.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

例外の有無でも発表/未発表を区別できるのですが、例外は重い処理であること、意図されていない使い方であることから、EEW未発表時(result.message="データがありません")はnullを返す、または未発表時のJsonをそのままパースした結果を返す等の処理に変更したほうが良いと思います。 なお、現在は""→Nullableの変換に失敗しているので、これが意図しない動作なら、修正をお願いします。

ingen084 commented 5 years ago

プルリクと関係なかったっすね…

ingen084 commented 5 years ago

修正を確認できたのでclose