package com.googlecode.mycontainer.commons.json;
import java.io.Serializable;
import java.io.Writer;
import java.util.List;
import java.util.Map;
import flexjson.JSONDeserializer;
import flexjson.JSONSerializer;
import flexjson.transformer.CharacterTransformer;
import flexjson.transformer.IterableTransformer;
import flexjson.transformer.MapTransformer;
public class JsonHandler implements Serializable {
private static final long serialVersionUID = -8576658801873381324L;
private static final JsonHandler ME = new JsonHandler();
private JSONSerializer serializer;
private JSONDeserializer<Object> deserializer;
public JsonHandler() {
this.serializer = new JSONSerializer();
deserializer = new JSONDeserializer<Object>();
serializer.transform(new CharacterTransformer(), CharSequence.class);
serializer.transform(new IterableTransformer(), List.class);
serializer.transform(new MapTransformer(), Map.class);
}
public static JsonHandler instance() {
return ME;
}
public JSONDeserializer<Object> getDeserializer() {
return deserializer;
}
public JSONSerializer getSerializer() {
return serializer;
}
public String format(Object obj) {
String ret = serializer.serialize(obj);
return ret;
}
public void format(Object obj, Writer writer) {
serializer.serialize(obj, writer);
}
public Object parse(String str) {
Object ret = deserializer.deserialize(str);
return ret;
}
@SuppressWarnings("unchecked")
public <T> T parse(String str, Class<T> clazz) {
T ret = (T) deserializer.deserialize(str, clazz);
return ret;
}
public void setPrettyPrint(boolean prettyPrint) {
serializer.prettyPrint(prettyPrint);
}
}