List of usage examples for com.google.gson.reflect TypeToken get
public static <T> TypeToken<T> get(Class<T> type)
From source file:com.jayway.jsonpath.internal.spi.mapper.GsonMappingProvider.java
License:Apache License
@Override public <T> T map(Object source, TypeRef<T> targetType, Configuration configuration) { try {//from w ww. j ava 2s .c o m return (T) factory.createInstance().getAdapter(TypeToken.get(targetType.getType())) .fromJsonTree((JsonElement) source); } catch (Exception e) { throw new MappingException(e); } }
From source file:com.jayway.jsonpath.spi.mapper.GsonMappingProvider.java
License:Apache License
@Override public <T> T map(Object source, TypeRef<T> targetType, Configuration configuration) { try {/*w w w . j a va 2s .co m*/ return (T) factory.call().getAdapter(TypeToken.get(targetType.getType())) .fromJsonTree((JsonElement) source); } catch (Exception e) { throw new MappingException(e); } }
From source file:com.jd.survey.web.settings.NowwebmanagerController.java
License:Open Source License
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override// w w w.j av a 2s. co m public void write(JsonWriter out, HibernateProxy value) throws IOException { if (value == null) { out.nullValue(); return; } // Retrieve the original (not proxy) class Class<?> baseType = Hibernate.getClass(value); // Get the TypeAdapter of the original class, to delegate the serialization TypeAdapter delegate = context.getAdapter(TypeToken.get(baseType)); // Get a filled instance of the original class Object unproxiedValue = ((HibernateProxy) value).getHibernateLazyInitializer().getImplementation(); // Serialize the value delegate.write(out, unproxiedValue); }
From source file:com.kotcrab.vis.editor.serializer.json.RuntimeTypeAdapterFactory.java
License:Apache License
public <R> TypeAdapter<R> create(Gson gson, TypeToken<R> type) { if (baseType.isAssignableFrom(type.getRawType()) == false) { return null; }/*from www . j a va 2s . com*/ final Map<String, TypeAdapter<?>> labelToDelegate = new LinkedHashMap<String, TypeAdapter<?>>(); final Map<Class<?>, TypeAdapter<?>> subtypeToDelegate = new LinkedHashMap<Class<?>, TypeAdapter<?>>(); for (Map.Entry<String, Class<?>> entry : labelToSubtype.entrySet()) { TypeAdapter<?> delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue())); labelToDelegate.put(entry.getKey(), delegate); subtypeToDelegate.put(entry.getValue(), delegate); } return new TypeAdapter<R>() { @Override public R read(JsonReader in) throws IOException { JsonElement jsonElement = Streams.parse(in); JsonElement labelJsonElement = jsonElement.getAsJsonObject().remove(typeFieldName); if (labelJsonElement == null) { throw new JsonParseException("cannot deserialize " + baseType + " because it does not define a field named " + typeFieldName); } String label = labelJsonElement.getAsString(); @SuppressWarnings("unchecked") // registration requires that subtype extends T TypeAdapter<R> delegate = (TypeAdapter<R>) labelToDelegate.get(label); if (delegate == null) { throw new JsonParseException("cannot deserialize " + baseType + " subtype named " + label + "; did you forget to register a subtype?"); } return delegate.fromJsonTree(jsonElement); } @Override public void write(JsonWriter out, R value) throws IOException { Class<?> srcType = value.getClass(); String label = subtypeToLabel.get(srcType); @SuppressWarnings("unchecked") // registration requires that subtype extends T TypeAdapter<R> delegate = (TypeAdapter<R>) subtypeToDelegate.get(srcType); if (delegate == null) { throw new JsonParseException( "cannot serialize " + srcType.getName() + "; did you forget to register a subtype?"); } JsonObject jsonObject = delegate.toJsonTree(value).getAsJsonObject(); if (jsonObject.has(typeFieldName)) { throw new JsonParseException("cannot serialize " + srcType.getName() + " because it already defines a field named " + typeFieldName); } JsonObject clone = new JsonObject(); clone.add(typeFieldName, new JsonPrimitive(label)); for (Map.Entry<String, JsonElement> e : jsonObject.entrySet()) { clone.add(e.getKey(), e.getValue()); } Streams.write(clone, out); } }; }
From source file:com.kubeiwu.easyandroid.easyhttp.core.retrofit.GsonConverterFactory.java
License:Apache License
/** Create a converter for {@code type}. */ @Override// w ww. j a va 2 s . c o m public Converter<?> get(Type type) { TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type)); return new GsonConverter<>(adapter, cache); }
From source file:com.learn.mobile.library.dmobi.helper.RuntimeTypeAdapterFactory.java
License:Apache License
public <R> TypeAdapter<R> create(Gson gson, TypeToken<R> type) { if (type.getRawType() != baseType) { return null; }/*from w w w .jav a 2 s . c o m*/ final Map<String, TypeAdapter<?>> labelToDelegate = new LinkedHashMap<String, TypeAdapter<?>>(); final Map<Class<?>, TypeAdapter<?>> subtypeToDelegate = new LinkedHashMap<Class<?>, TypeAdapter<?>>(); for (Map.Entry<String, Class<?>> entry : labelToSubtype.entrySet()) { TypeAdapter<?> delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue())); labelToDelegate.put(entry.getKey(), delegate); subtypeToDelegate.put(entry.getValue(), delegate); } return new TypeAdapter<R>() { @Override public R read(JsonReader in) throws IOException { JsonElement jsonElement = Streams.parse(in); // JsonElement labelJsonElement = jsonElement.getAsJsonObject().remove(typeFieldName); // Do not remove typeFieldName JsonElement labelJsonElement = jsonElement.getAsJsonObject().get(typeFieldName); if (labelJsonElement == null) { throw new JsonParseException("cannot deserialize " + baseType + " because it does not define a field named " + typeFieldName); } String label = labelJsonElement.getAsString(); @SuppressWarnings("unchecked") // registration requires that subtype extends T TypeAdapter<R> delegate = (TypeAdapter<R>) labelToDelegate.get(label); if (delegate == null) { throw new JsonParseException("cannot deserialize " + baseType + " subtype named " + label + "; did you forget to register a subtype?"); } return delegate.fromJsonTree(jsonElement); } @Override public void write(JsonWriter out, R value) throws IOException { Class<?> srcType = value.getClass(); String label = subtypeToLabel.get(srcType); @SuppressWarnings("unchecked") // registration requires that subtype extends T TypeAdapter<R> delegate = (TypeAdapter<R>) subtypeToDelegate.get(srcType); if (delegate == null) { throw new JsonParseException( "cannot serialize " + srcType.getName() + "; did you forget to register a subtype?"); } JsonObject jsonObject = delegate.toJsonTree(value).getAsJsonObject(); if (jsonObject.has(typeFieldName)) { throw new JsonParseException("cannot serialize " + srcType.getName() + " because it already defines a field named " + typeFieldName); } JsonObject clone = new JsonObject(); clone.add(typeFieldName, new JsonPrimitive(label)); for (Map.Entry<String, JsonElement> e : jsonObject.entrySet()) { clone.add(e.getKey(), e.getValue()); } Streams.write(clone, out); } }.nullSafe(); }
From source file:com.magnet.max.android.rest.marshalling.MagnetGsonConverterFactory.java
License:Apache License
/** * Create an instance using {@code gson} for conversion. Encoding to JSON and * decoding from JSON (when no charset is specified by a header) will use UTF-8. *//*from w w w. j av a 2s . co m*/ //public static MagnetGsonConverterFactory create(Gson gson) { // return new MagnetGsonConverterFactory(gson); //} // //private final Gson gson; // //private MagnetGsonConverterFactory(Gson gson) { // if (gson == null) { // gson = new GsonBuilder() // .setDateFormat(Iso8601DateConverter.ISO8601DateFormat_WITH_MS) // //.registerTypeAdapter(Date.class, new DateTypeAdapter()) // .create(); // }; // this.gson = gson; //} @Override public Converter<?> get(Type type) { TypeToken typeToken = TypeToken.get(type); return new MagnetGsonConverter<>(typeToken); }
From source file:com.magnet.mmx.client.api.MMXMessage.java
License:Apache License
private static void parsePayload(String payloadType, String data, MMXMessage.Builder newMessage) { String payloadDataType = getPayloadTypeName(payloadType); if (null != payloadDataType) { Class payloadDataTypeClass = getPayloadType(payloadDataType); if (null != payloadDataTypeClass) { if (StringUtil.isNotEmpty(data)) { newMessage.payload((MMXTypedPayload) GsonDecorator.getInstance().fromJson(data, TypeToken.get(payloadDataTypeClass))); } else { Log.e(TAG, "Payload is empty for type " + payloadDataType); }/* ww w . ja va 2s .c om*/ } else { Log.e(TAG, "Payload type " + payloadDataType + " is not registered"); } } }
From source file:com.maneater.app.sport.net.core.GsonConverterFactory.java
License:Apache License
@Override public Converter<?, RequestBody> requestBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type)); return new GsonRequestBodyConverter(gson, adapter); }
From source file:com.maneater.app.sport.net.core.GsonResponseBodyConverter.java
License:Apache License
GsonResponseBodyConverter(Gson gson, Type type) {
adapter = gson.getAdapter(TypeToken.get(type));
}