I am a new user of Restlet (and quite hapy with it, too), but I found that 
using the JSON classes that come with it do not work well enough for me.  They 
do serialize basic classes, but do not work on things like HashMap, or really 
anything nested.  I checked the main JSON website to see if there were newer 
versions of those classes (there are), but they still do not on nested objects.

JSON-Lib does work well for this, so I switched to using that.  However, when I 
want to create a representation out of the new (JSON-Lib) JSONObject, it does 
not accept the type.

   Representation representation = new JsonRepresentation(json);

The warning is: "Type safety: The expression of type JSONObject needs unchecked 
conversion to conform to Map<Object,Object>"

The reason is because "json" is of type "net.sf.json.JSONObject" instead of 
"org.json.JSONObject".  Ultimately, the best solution is for 
"net.sf.json.JSONObject" to extend "org.json.JSONObject", as is done with other 
JSON libraries I have tested, but I seriously doubt this is going to happen.  I 
can "fix" the issue by doing this instead:

   Representation representation = new JsonRepresentation(json.toString());

It just seems wasteful to have a usable JSONObject, convert it to a string and 
then pass it to a constructor.

Has anyone successfully used JSON-Lib with Restlet without resorting to a hack 
like this?  Also, is there a reason that Restlet only works with the basic 
"org.json.*" library?  I would think that JSONObject should be handled in the 
way logging is handled:  you can use the basic built-in logging in the JDK, or 
use something else, like Log4J.  Can this also be done with "org.json.*" and 
other JSON implementations, too?

I very much would appreciate any replies / suggestions.

Mike V.

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1014233

Reply via email to