clux/lq

add better errors from deserialize

Opened this issue · 1 comments

clux commented

want to let users more easily see where deserialise errors comes from.

Ideally you can add serde_path_to_error and swap out the deserializer calls with serde_path_to_error::deserialize(deserializer)

e.g.:

# original
let value: Type = serde_json::from_str(data)?
# replacement
let deserializer = &mut serde_json::Deserializer::from_str(data);
let value: Type = serde_path_to_error::deserialize(deserializer)?

There are some uncertainties here though:

  • will this work with readers? we use BufRead generally
  • will this work with singleton_map_recursive from serde_yaml? we need this to handle yaml tags
clux commented

alternative; https://github.com/eopb/serde_json_path_to_error if it implements the various wrappers (as requested in its issues)