2017-07-06 11 views
0

こんにちは私はエンコード/ jsonの上golangで働いていますを追加し、それがヌルでJSONのエラーを返す:Golangエンコーディング/ JSONマーシャルはヌル

{"user_message":"Can't find any Query with those parameters","application_context":"GroupsRepository.GetGroupsByQuery: ApplicationError: UserMessage - Error querying database for many Groups. ApplicationContext - Groups.GetMany: pq: column \"refill_too_soon_gpi_digits\" does not exist"} null 

、それがあることを私マーシャル方法:

func EncodeErrorResponse(w http.ResponseWriter, err error, status int) { 
    w.WriteHeader(http.StatusOK) 
    w.Header().Set("Content-Type", "application/json") 
    json.NewEncoder(w).Encode(err) 
} 

誰かが私を助けてくれましたか。

+0

引用したJSON出力を見ると、エラーが正しくエンコードされているように見えますが、別の書き込み操作を示すJSONの後に「null」が出力されています。他のコード(おそらくこの関数の呼び出し側)がこの出力を書き込んでいる可能性はありますか?また、ステータスコードを取得しても使用しないことに注意してください。常にStatusOKを使用します。 'Encode'によって返されたエラーを無視していることを示します。 – Adrian

+0

関数は別の関数で使用しますが、エンコードの戻り値がnullであるというエラーはエンコード/ jsonに問題があるかどうかわかりません。 – llCastro

+0

/jsonのエンコーディングに問題はありません。 'EncodeErrorResponse'を呼び出すと、それを呼び出す関数は' ResponseWriter'に追加の出力を書き込みます。 – Adrian

答えて

0

引用したJSON出力を見ると、エラーが正しくエンコードされているように見えますが、別の書き込み操作を示すJSONの後にnullが出力されているようです。 EncodeErrorResponseを呼び出した後、EncodeErrorResponseを呼び出す関数は、ResponseWriterに追加の出力を書き込みます。