PageRenderTime 59ms CodeModel.GetById 34ms RepoModel.GetById 1ms app.codeStats 0ms

/tpc/src/serializers/json/FastJSONDatabind.java

https://github.com/muga/jvm-serializers
Java | 53 lines | 39 code | 10 blank | 4 comment | 0 complexity | 7cb1c02d955bb6785f46dadfdc80b5ca MD5 | raw file
  1. package serializers.json;
  2. import java.io.*;
  3. import serializers.JavaBuiltIn;
  4. import serializers.Serializer;
  5. import serializers.TestGroups;
  6. import data.media.MediaContent;
  7. import com.alibaba.fastjson.JSON;
  8. import com.alibaba.fastjson.serializer.SerializerFeature;
  9. /**
  10. * This serializer uses FastJSON [http://code.alibabatech.com/wiki/display/FastJSON] for JSON data binding.
  11. */
  12. public class FastJSONDatabind
  13. {
  14. public static void register(TestGroups groups)
  15. {
  16. groups.media.add(JavaBuiltIn.mediaTransformer,
  17. new GenericSerializer<MediaContent>("json/fastjson/databind", MediaContent.class));
  18. }
  19. static class GenericSerializer<T> extends Serializer<T>
  20. {
  21. private final String name;
  22. private final Class<T> type;
  23. public GenericSerializer(String name, Class<T> clazz)
  24. {
  25. this.name = name;
  26. type = clazz;
  27. }
  28. public String getName()
  29. {
  30. return name;
  31. }
  32. public T deserialize(byte[] array) throws Exception
  33. {
  34. // fastjson can parse from byte array, yay:
  35. return JSON.parseObject(array, type);
  36. }
  37. public byte[] serialize(T data) throws IOException
  38. {
  39. String jsonString = JSON.toJSONString(data, SerializerFeature.WriteEnumUsingToString);
  40. return jsonString.getBytes("UTF-8");
  41. }
  42. }
  43. }