Rustのserde_jsonでエラーの発生箇所を知る方法
#概要
serde_jsonではパースエラー発生時にどのプロパティでエラーが発生したのかわからない
#解決策
参考: https://github.com/serde-rs/json/issues/173#issuecomment-451789006
#コード例
#Before
let result = serde_json::from_str::<JsonStruct>(&json);#After
let jd = &mut serde_json::Deserializer::from_str(&json);
let result: std::result::Result<JsonStruct, _> = serde_path_to_error::deserialize(jd);#実行例
#Before
Failed to parse json: invalid type: integer `880`, expected a string at line 1 column 1572
このようにどこがエラーなのか非常にわかりづらかったのが…
#After
Failed to parse json: [0].price: invalid type: integer `880`, expected a string at line 1 column 1572
エラー箇所が出てとても便利になりました