I'm wondering what the difference is between the two functions.
It seems they achieve the same thing except DeserializeObject will zero out any existing values in the target object if they aren't present in the given JSON string, while PopulateObject preserves existing values.