Make DeserializeJSON generic
Revert "Make DeserializeJSON generic"

This reverts commit 75f356aface61b3d98c35e8b6df30192df18a0fd.
Revert "Revert "Make DeserializeJSON generic""

This reverts commit 77b5c8a1018ac862c7df2ae32b5d74d00151c88f.