Use protobuf JSON utilities for JSON (de-)serialisation #302
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In this PR I switch from RapidJSON to protobuf-based JSON (de-)serialisation.
This change greatly simplifies the serialisation logic, and also makes it possible to (de-)serialise any other protobuf message that inherits from
google::protobuf::Message
.The only downside is that the serialisation keys we manually set (i.e.
py_user
orpy_func
) are deeply embedded throughout the organisation's codebase. For example, infaasmcli
or in the experiments repo. By default, protobuf sets its own keywords based on the proto file, but we can also force the serialisation name. We do the latter. I think I am not forgetting any keys, but there's no way to be really sure. I also add a regression test to make sure the keys we use elsewhere are always there in the form we expect them to be.Closes #167