本文整理了Java中com.google.gson.reflect.TypeToken
类的一些代码示例,展示了TypeToken
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。TypeToken
类的具体详情如下:
包路径:com.google.gson.reflect.TypeToken
类名称:TypeToken
[英]Represents a generic type T. Java doesn't yet provide a way to represent generic types, so this class does. Forces clients to create a subclass of this class which enables retrieval the type information even at runtime.
For example, to create a type literal for List, you can create an empty anonymous inner class:
TypeToken> list = new TypeToken>() {};}
This syntax cannot be used to create type literals that have wildcard parameters, such as Class or List.
[中]表示泛型类型T。Java还没有提供表示泛型类型的方法,所以这个类提供了。强制客户机创建此类的子类,这样即使在运行时也可以检索类型信息。
例如,要为列表创建类型文字,可以创建一个空的匿名内部类:
TypeToken>list=new TypeToken>({};}
此语法不能用于创建具有通配符参数(例如类或列表)的类型文字。
代码示例来源:origin: immutables/immutables
@Override
public void write(JsonWriter out, T value) throws IOException {
if (value == null) {
out.nullValue();
return;
}
for (int i = 0; i < subtypes.length; i++) {
TypeToken<? extends T> subtype = subtypes[i];
if (subtype.getRawType().isInstance(value)) {
// safe unchecked, type is checked at runtime
@SuppressWarnings("unchecked") TypeAdapter<Object> typeAdapter = (TypeAdapter<Object>) adapters.get(i);
typeAdapter.write(out, value);
return;
}
}
gson.toJson(value, value.getClass(), out);
}
代码示例来源:origin: biezhi/wechat-api
public static <T> T fromJson(String json, TypeToken<T> typeToken) {
return GSON.fromJson(json, typeToken.getType());
}
代码示例来源:origin: immutables/immutables
@SuppressWarnings("unchecked")
@Override
public void write(Gson gson, Type type, Object object, OutputStream stream) throws IOException {
@Nullable JsonWriter writer = null;
boolean wasOriginalException = false;
try {
writer = new JsonWriter(new BufferedWriter(new OutputStreamWriter(stream, CHARSET_NAME)));
options.setWriterOptions(writer);
gson.getAdapter((TypeToken<Object>) TypeToken.get(type)).write(writer, object);
} catch (IOException ex) {
wasOriginalException = true;
throw ex;
} catch (Exception ex) {
wasOriginalException = true;
throw new IOException(ex);
} finally {
if (writer != null) {
try {
// underlying stream should not be closed, just flushing
writer.flush();
} catch (IOException ex) {
if (!wasOriginalException) {
throw ex;
}
}
}
}
}
代码示例来源:origin: apache/incubator-gobblin
@Override
public <R> TypeAdapter<R> create(Gson gson, TypeToken<R> type) {
if (ClassUtils.isPrimitiveOrWrapper(type.getRawType()) || type.getType() instanceof GenericArrayType
|| CharSequence.class.isAssignableFrom(type.getRawType())
|| (type.getType() instanceof ParameterizedType && (Collection.class.isAssignableFrom(type.getRawType())
|| Map.class.isAssignableFrom(type.getRawType())))) {
// delegate primitives, arrays, collections, and maps
return null;
}
if (!this.baseClass.isAssignableFrom(type.getRawType())) {
// delegate anything not assignable from base class
return null;
}
TypeAdapter<R> adapter = new InterfaceAdapter<>(gson, this, type);
return adapter;
}
代码示例来源:origin: apache/zeppelin
public <R> TypeAdapter<R> create(Gson gson, TypeToken<R> type) {
if (type.getRawType() != baseType) {
return null;
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);
代码示例来源:origin: ffay/lanproxy
@SuppressWarnings("unchecked")
public static <T> T json2object(String json, TypeToken<T> typeToken) {
try {
Gson gson = new Gson();
return (T) gson.fromJson(json, typeToken.getType());
} catch (Exception e) {
}
return null;
}
代码示例来源:origin: immutables/immutables
@SuppressWarnings({"resource", "unchecked"})
public static <T> T fromJson(String string, Class<T> type) {
TypeAdapter<Object> adapter = GSON.getAdapter((TypeToken<Object>) TypeToken.get(type));
try {
if (adapter instanceof com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.Adapter) {
throw new IllegalStateException("Immutable adapters not registered");
}
JsonParserReader reader = new JsonParserReader(JSON_FACTORY.createParser(string));
return GSON.fromJson(reader, type);
} catch (IOException ex) {
throw Throwables.propagate(ex);
}
}
}
代码示例来源:origin: immutables/immutables
@SuppressWarnings({"resource", "unchecked"})
public static String toJson(Object object) {
TypeAdapter<Object> adapter = GSON.getAdapter((TypeToken<Object>) TypeToken.get(object.getClass()));
try {
StringWriter stringWriter = new StringWriter();
JsonGeneratorWriter writer = new JsonGeneratorWriter(JSON_FACTORY.createGenerator(stringWriter));
if (adapter instanceof com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.Adapter) {
throw new IllegalStateException("Immutable adapters not registered");
}
GSON.toJson(object, object.getClass(), writer);
writer.close();
return stringWriter.toString();
} catch (IOException ex) {
throw Throwables.propagate(ex);
}
}
代码示例来源:origin: immutables/immutables
private static <T> String toJsonIterable(List<? extends T> list, TypeToken<List<T>> typeToken) {
return Marshaling.getGson().toJson(list, typeToken.getType());
}
}
代码示例来源:origin: apache/cloudstack
@SuppressWarnings("unchecked")
public <T> T updateNeutronNodeV2(final String nodeType, final String nodeId, final String ipAddress, final int port) throws NeutronRestApiException {
String uri = NeutronNorthboundEnum.NODE_PORT_PER_TYPE_URI.getUri();
uri = MessageFormat.format(uri, nodeType, nodeId, ipAddress, String.valueOf(port));
String bodystring = executePut(uri);
T result = (T) gsonNeutronNode.fromJson(bodystring, TypeToken.get(NeutronNodeWrapper.class).getType());
return result;
}
}
代码示例来源:origin: camunda/camunda-bpm-platform
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {
Type type = typeToken.getType();
Class<? super T> rawType = typeToken.getRawType();
if (!Collection.class.isAssignableFrom(rawType)) {
return null;
}
Type elementType = $Gson$Types.getCollectionElementType(type, rawType);
TypeAdapter<?> elementTypeAdapter = gson.getAdapter(TypeToken.get(elementType));
ObjectConstructor<T> constructor = constructorConstructor.get(typeToken);
@SuppressWarnings({"unchecked", "rawtypes"}) // create() doesn't define a type parameter
TypeAdapter<T> result = new Adapter(gson, elementType, elementTypeAdapter, constructor);
return result;
}
代码示例来源:origin: camunda/camunda-bpm-platform
@SuppressWarnings({"unchecked", "rawtypes"})
@Override public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {
Type type = typeToken.getType();
if (!(type instanceof GenericArrayType || type instanceof Class && ((Class<?>) type).isArray())) {
return null;
}
Type componentType = $Gson$Types.getArrayComponentType(type);
TypeAdapter<?> componentTypeAdapter = gson.getAdapter(TypeToken.get(componentType));
return new ArrayTypeAdapter(
gson, componentTypeAdapter, $Gson$Types.getRawType(componentType));
}
};
代码示例来源:origin: camunda/camunda-bpm-platform
@SuppressWarnings("unchecked") // guarded by typeToken.equals() call
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
boolean matches = exactType != null
? exactType.equals(type) || matchRawType && exactType.getType() == type.getRawType()
: hierarchyType.isAssignableFrom(type.getRawType());
return matches
? new TreeTypeAdapter<T>((JsonSerializer<T>) serializer,
(JsonDeserializer<T>) deserializer, gson, type, this)
: null;
}
}
代码示例来源:origin: camunda/camunda-bpm-platform
Type declaredType = type.getType();
while (raw != Object.class) {
Field[] fields = raw.getDeclaredFields();
Type fieldType = $Gson$Types.resolve(type.getType(), raw, field.getGenericType());
List<String> fieldNames = getFieldNames(field);
BoundField previous = null;
if (i != 0) serialize = false; // only serialize the default name
BoundField boundField = createBoundField(context, field, name,
TypeToken.get(fieldType), serialize, deserialize);
BoundField replaced = result.put(name, boundField);
if (previous == null) previous = replaced;
type = TypeToken.get($Gson$Types.resolve(type.getType(), raw, raw.getGenericSuperclass()));
raw = type.getRawType();
代码示例来源:origin: immutables/immutables
@SuppressWarnings("unchecked")
@Override
public Object read(Gson gson, Type type, InputStream stream) throws IOException {
@Nullable JsonReader reader = null;
try {
reader = createJsonReader(new BufferedReader(new InputStreamReader(stream, CHARSET_NAME)));
options.setReaderOptions(reader);
return gson.getAdapter((TypeToken<Object>) TypeToken.get(type)).read(reader);
} catch (IOException ex) {
throw ex;
} catch (Exception ex) {
throw new IOException(ex);
}
}
代码示例来源:origin: square/retrofit
@Override
public Converter<?, RequestBody> requestBodyConverter(Type type,
Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) {
TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type));
return new GsonRequestBodyConverter<>(gson, adapter);
}
}
代码示例来源:origin: apache/incubator-gobblin
private <S> S readNull() {
if (this.typeToken.getRawType() == Optional.class) {
return (S) Optional.absent();
}
return null;
}
代码示例来源:origin: nickbutcher/plaid
@Override
public Converter<ResponseBody, ?> responseBodyConverter(
Type type, Annotation[] annotations, Retrofit retrofit) {
// This converter requires an annotation providing the name of the payload in the envelope;
// if one is not supplied then return null to continue down the converter chain.
final String payloadName = getPayloadName(annotations);
if (payloadName == null) return null;
final TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type));
return (Converter<ResponseBody, Object>) body -> {
try (JsonReader jsonReader = gson.newJsonReader(body.charStream())) {
jsonReader.beginObject();
while (jsonReader.hasNext()) {
if (payloadName.equals(jsonReader.nextName())) {
return adapter.read(jsonReader);
} else {
jsonReader.skipValue();
}
}
return null;
} finally {
body.close();
}
};
}
代码示例来源:origin: amitshekhariitbhu/Fast-Android-Networking
public ANResponse executeForParsed(TypeToken typeToken) {
this.mType = typeToken.getType();
this.mResponseType = ResponseType.PARSED;
return SynchronousCall.execute(this);
}
代码示例来源:origin: json-path/JsonPath
@Override
public <T> T map(Object source, TypeRef<T> targetType, Configuration configuration) {
if(source == null){
return null;
}
try {
return (T) factory.call().getAdapter(TypeToken.get(targetType.getType())).fromJsonTree((JsonElement) source);
} catch (Exception e){
throw new MappingException(e);
}
}
}
内容来源于网络,如有侵权,请联系作者删除!