fix: only reimplement JsonSerialize if it does not exist