Note: this answer was written a long time ago. Use John, Jersey or Jackson.
I went with json-simple to my last project. It does not introduce any unnecessary project dependencies (such as apache-commons banks), and this is enough to properly parse / generate JSON.
You still have to manage your own circular links. I really doubt that there is such a library that is built for this. You can do this easily by adding to the Set all the objects you are converting, and then just checking to see if the object you are going to convert is in the set.
Also, I don't think json-simple will automatically serialize the object; those. You must submit the data you want to add to JSON. It just handles all the messy formatting for you.
source share