So I have AJAX requests that send JSON objects (as a string) to Java servlets, I can parse the strings back into a JSON object with googles gson. But then what? Should I keep using the JSON format or turn it into a native Java collection of some sort like a Map or whatever? Does it matter?
Depends on how much of each end you are going to control. We have been bitten in the past because the object being serialized/deserialized has been updated but the client/server hasn't been updated to handle the extra fields. Jackson is the same way. You can kind of get around it but it is a little bit of a pain.
If you can guarantee that the client/server will stay in lock step with the version of the object they are using, then I would say just deserialize it into the object you desire. If, on the other hand, it is possible for different versions of the object to be serialized by the client and server, then the better approach is to deserialize into a map or write a custom deserializer that can handle version differences (about the same level of difficulty. With Jackson I believe you can get faster performance with a custom deserializer, with gson it is more of a wash).
If teams or outside clients that you don't control are going to be hitting this endpoint, I would suggest going the most flexible route possible. Anything less will cause you a lot of headaches in the future.
BTW, Jackson generally has better serialization/deserialization performance than GSON, and if you can get away with it, Protobufs will beat both of them (and it solves the version problem quite nicely). I have found serialization to be a largish bottle neck in my apps.