com.google.gson.reflect.TypeToken类的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(10.2k)|赞(0)|评价(0)|浏览(536)

本文整理了Java中com.google.gson.reflect.TypeToken类的一些代码示例,展示了TypeToken类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。TypeToken类的具体详情如下:
包路径:com.google.gson.reflect.TypeToken
类名称: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);
    }
  }
}

相关文章