少し前に、json.UnmarshalTypeError
タイプにOffset
の値を追加しました(コンテキストについては、閉鎖された問題hereを参照)。オフセット値の背後にある目的は意味がありますが、タイプhttp:// io.ReadCloser
のgo http応答本文を読み込むときにどのように使用できるかはわかりません。例えばより良いエラー処理のために、enconding/jsonのUnmarshalTypeErrorでオフセット値を使用するにはどうすればよいですか?
// An UnmarshalTypeError describes a JSON value that was
// not appropriate for a value of a specific Go type.
type UnmarshalTypeError struct {
Value string // description of JSON value - "bool", "array", "number -5"
Type reflect.Type // type of Go value it could not be assigned to
Offset int64 // error occurred after reading Offset bytes
}
:捕まるエラーの時点で
var body CustomType
decoderErr := json.NewDecoder(response.Body).Decode(&body)
if decoderErr != nil {
if typeError, ok := decoderErr.(*json.UnmarshalTypeError); ok {
// Do something with typeError.Offset here
}
}
、私はすでにjson.NewDecoder...
経由response.Body
から読みました。私はもう一度response.Body
を読む方法を探していますが、エラーのポイントまでは、typeErrorのOffset値を使用してください。
が少しでもよくするつもりされていないエラーの時点まで読んで、あなただけの予期しないEOFエラーで非整列化エラーを交換しています。 – JimB
最終的には、非マーシャリング時に問題の原因となったキーを取得するためにオフセットを使用したいと思いますが、response.Bodyを読み取ることができるのはステップ1です。 – Alex
これで、repsonseボディをバッファリングする方法を尋ねていますか? – JimB