List of usage examples for com.google.gson.reflect TypeToken get
public static <T> TypeToken<T> get(Class<T> type)
From source file:com.dubic.codesnippets.application.GsonMessageConverter.java
/** * Return the Gson {@link TypeToken} for the specified type. * <p>/* w w w . j a va 2 s. co m*/ * The default implementation returns {@code TypeToken.get(type)}, but this * can be overridden in subclasses to allow for custom generic collection * handling. For instance: * <pre class="code"> * protected TypeToken<?> getTypeToken(Type type) { if (type instanceof * Class && List.class.isAssignableFrom((Class<?>) type)) { return new * TypeToken<ArrayList<MyBean>>() {}; } else { return * super.getTypeToken(type); } } * </pre> * * @param type the type for which to return the TypeToken * @return the type token */ protected TypeToken<?> getTypeToken(Type type) { return TypeToken.get(type); }
From source file:com.ecwid.mailchimp.internal.gson.MailChimpObjectTypeAdapter.java
License:Apache License
@Override public MailChimpObject read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull();//www . j av a 2 s . c o m return null; } MailChimpObject result; try { result = constructor.newInstance(); } catch (Exception e) { throw new RuntimeException("Failed to invoke " + constructor + " with no args", e); } in.beginObject(); while (in.hasNext()) { final String key; if (in.peek() == JsonToken.NAME) { key = in.nextName(); } else { key = in.nextString(); } final Object value; Type valueType = result.getReflectiveMappingTypes().get(key); if (valueType != null) { value = gson.getAdapter(TypeToken.get(valueType)).read(in); } else { if (in.peek() == JsonToken.BEGIN_OBJECT) { value = gson.getAdapter(MailChimpObject.class).read(in); } else if (in.peek() == JsonToken.BEGIN_ARRAY) { value = readList(in); } else { value = gson.getAdapter(Object.class).read(in); } } if (result.put(key, value) != null) { throw new JsonSyntaxException("duplicate key: " + key); } } in.endObject(); return result; }
From source file:com.etermax.conversations.repository.impl.elasticsearch.mapper.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 . j a v a2 s . co 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); 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.example.gitnb.api.retrofit.converter.GsonConverterFactory.java
License:Apache License
@Override public Converter<ResponseBody, ?> fromResponseBody(Type type, Annotation[] annotations) { TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type)); return new GsonResponseBodyConverter<>(adapter); }
From source file:com.example.gitnb.api.retrofit.converter.GsonConverterFactory.java
License:Apache License
@Override public Converter<?, RequestBody> toRequestBody(Type type, Annotation[] annotations) { TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type)); return new GsonRequestBodyConverter<>(gson, adapter); }
From source file:com.example.killnono.common.datacore.net.converter.json.XJsonConverterFactory.java
License:Open Source License
@Override public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {//from ww w .j a v a 2 s. com TypeToken<?> typeToken = TypeToken.get(type); if (typeToken.getRawType() == JSONObject.class) { return new JsonResponseBodyConverter<JSONObject>(); } else if (typeToken.getRawType() == JSONArray.class) { return new JsonArrayResponseBodyConverter<JSONArray>(); } else { try { throw new Throwable("?"); } catch (Throwable throwable) { throwable.printStackTrace(); return null; } } }
From source file:com.example.killnono.common.datacore.net.converter.maplist.JsonConverterFactory.java
License:Open Source License
@Override public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {//from ww w. j a v a 2 s. c om TypeToken<?> typeToken = TypeToken.get(type); if (typeToken.getRawType() == JSONObject.class) { return new JsonResponseBodyConverter<JSONObject>(); } else if (typeToken.getRawType() == JSONArray.class) { return new ListResponseBodyConverter<JSONArray>(); } else { try { throw new Throwable("?"); } catch (Throwable throwable) { throwable.printStackTrace(); return null; } } }
From source file:com.fangzhi.app.network.http.converter.GsonConverterFactory.java
License:Apache License
@Override public Converter<ResponseBody, ?> responseBodyConverter(final Type type, Annotation[] annotations, Retrofit retrofit) {/* w ww.j ava 2s . c om*/ Type newType = new ParameterizedType() { @Override public Type[] getActualTypeArguments() { return new Type[] { type }; } @Override public Type getOwnerType() { return null; } @Override public Type getRawType() { return ApiModel.class; } }; TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(newType)); return new GsonResponseBodyConverter<>(adapter); }
From source file:com.flipkart.android.proteus.demo.converter.GsonRequestBodyConverter.java
License:Apache License
private TypeAdapter<T> getAdapter() { if (null == typeAdapter) { //noinspection unchecked typeAdapter = (TypeAdapter<T>) gson.getAdapter(TypeToken.get(type)); }/*from ww w .j a v a 2 s . c o m*/ return typeAdapter; }
From source file:com.flipkart.android.proteus.demo.converter.UrlEncodedGsonRequestBodyConverter.java
License:Apache License
@Override public RequestBody convert(T value) throws IOException { //noinspection unchecked TypeAdapter<T> adapter = (TypeAdapter<T>) gson.getAdapter(TypeToken.get(type)); Writer writer = new StringWriter(); JsonWriter jsonWriter = gson.newJsonWriter(writer); adapter.write(jsonWriter, value);/*w ww. j a v a 2s . com*/ jsonWriter.close(); return RequestBody.create(MEDIA_TYPE, URLEncoder.encode(writer.toString(), "UTF-8").getBytes()); }