2016-08-11 9 views
4

Go内のJSON構成ファイルの解析と検証(カスタム)を行いたいと思います。私は、構造体にファイルを解析し、それを検証できるようにしたい:Golang:JSONの検証とエラー位置の表示

  1. 予期しないキーは、JSONファイルに存在しない(特に、タイプミスを検出する)
  2. 特定のキーが存在し、非有します空の値

エラーが発生した場合(または構文エラーの場合)は、ファイルにエラーが発生した場所を可能な限り詳細に説明するエラーメッセージをユーザーに出力します(例:可能であれば行番号)。

Goに組み込まれたJSONパーサーは、予期しないキーを静かに無視するようです。 JSONを逆シリアル化するためにjsonpb(Protobuf)を使用してみましたが、予期しないキーの場合はエラーを返しますが、位置は報告しません。

空でない値をチェックするには、既存の検証ライブラリを使用できますが、詳細なエラーメッセージは報告されていません。また、組み込みのJSONパーサーから返されたデータを検証するカスタムコードを書くこともできますが、一般的な方法があればいいでしょう。

希望の動作を得る簡単な方法はありますか?

答えて

2

あなたはJSON schemaを見ましたか?

JSONスキーマは、JSONデータフォーマットを記述します。

私はそれがドラフト段階にあると思いますが、多くの言語で検証ライブラリがあります。ここに行くの実装です:

+0

感謝。はい、リンクした実装を試しました。残念ながら、検証が失敗した場合にエラー位置を返すようには見えません。 – stephank

+0

私は自分でライブラリを試していません。多分エラー位置はそれに追加できるものですか? – miku

+0

私はもうちょっとxeipuuvのgojsonschemaを見ました。エラー位置に関する情報を出力することができます: 'fmt.Printf(" - %s:%s \ n "、error.Context()。String()、error)'。 これは次のように表示されます ' - (root).0:name:name is required' – stephank

関連する問題