001
014
015 package com.liferay.portal.json;
016
017 import com.liferay.portal.kernel.json.JSONSerializer;
018 import com.liferay.portal.kernel.json.JSONTransformer;
019
020 import jodd.json.JoddJson;
021 import jodd.json.JsonContext;
022 import jodd.json.JsonSerializer;
023 import jodd.json.TypeJsonSerializer;
024
025
028 public class JSONSerializerImpl implements JSONSerializer {
029
030 public JSONSerializerImpl() {
031 _jsonSerializer = new JsonSerializer();
032 }
033
034 @Override
035 public JSONSerializerImpl exclude(String... fields) {
036 _jsonSerializer.exclude(fields);
037
038 return this;
039 }
040
041 @Override
042 public JSONSerializerImpl include(String... fields) {
043 _jsonSerializer.include(fields);
044
045 return this;
046 }
047
048 @Override
049 public String serialize(Object target) {
050 return _jsonSerializer.serialize(target);
051 }
052
053 @Override
054 public String serializeDeep(Object target) {
055 return _jsonSerializer.deep(true).serialize(target);
056 }
057
058 @Override
059 public JSONSerializerImpl transform(
060 JSONTransformer jsonTransformer, Class<?> type) {
061
062 TypeJsonSerializer<?> typeJsonSerializer = null;
063
064 if (jsonTransformer instanceof TypeJsonSerializer) {
065 typeJsonSerializer = (TypeJsonSerializer<?>)jsonTransformer;
066 }
067 else {
068 typeJsonSerializer = new JoddJsonTransformer(jsonTransformer);
069 }
070
071 _jsonSerializer.use(type, typeJsonSerializer);
072
073 return this;
074 }
075
076 @Override
077 public JSONSerializerImpl transform(
078 JSONTransformer jsonTransformer, String field) {
079
080 TypeJsonSerializer<?> typeJsonSerializer = null;
081
082 if (jsonTransformer instanceof TypeJsonSerializer) {
083 typeJsonSerializer = (TypeJsonSerializer<?>)jsonTransformer;
084 }
085 else {
086 typeJsonSerializer = new JoddJsonTransformer(jsonTransformer);
087 }
088
089 _jsonSerializer.use(field, typeJsonSerializer);
090
091 return this;
092 }
093
094 static {
095 JoddJson.defaultSerializers.register(
096 Long.TYPE, new LongToStringTypeJSONSerializer());
097 JoddJson.defaultSerializers.register(
098 Long.class, new LongToStringTypeJSONSerializer());
099 }
100
101 private final JsonSerializer _jsonSerializer;
102
103 private static class LongToStringTypeJSONSerializer
104 implements TypeJsonSerializer<Long> {
105
106 @Override
107 public void serialize(JsonContext jsonContext, Long value) {
108 jsonContext.writeString(Long.toString(value));
109 }
110
111 }
112
113 }