本文整理匯總了Java中com.google.gson.annotations.JsonAdapter類的典型用法代碼示例。如果您正苦於以下問題:Java JsonAdapter類的具體用法?Java JsonAdapter怎麽用?Java JsonAdapter使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
JsonAdapter類屬於com.google.gson.annotations包,在下文中一共展示了JsonAdapter類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: getTypeAdapter
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
@SuppressWarnings("unchecked") // Casts guarded by conditionals.
static TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
TypeToken<?> fieldType, JsonAdapter annotation) {
Class<?> value = annotation.value();
if (TypeAdapter.class.isAssignableFrom(value)) {
Class<TypeAdapter<?>> typeAdapter = (Class<TypeAdapter<?>>) value;
return constructorConstructor.get(TypeToken.get(typeAdapter)).construct();
}
if (TypeAdapterFactory.class.isAssignableFrom(value)) {
Class<TypeAdapterFactory> typeAdapterFactory = (Class<TypeAdapterFactory>) value;
return constructorConstructor.get(TypeToken.get(typeAdapterFactory))
.construct()
.create(gson, fieldType);
}
throw new IllegalArgumentException(
"@JsonAdapter value must be TypeAdapter or TypeAdapterFactory reference.");
}
示例2: getTypeAdapter
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
@SuppressWarnings("unchecked") // Casts guarded by conditionals.
static TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
TypeToken<?> fieldType, JsonAdapter annotation) {
Class<?> value = annotation.value();
TypeAdapter<?> typeAdapter;
if (TypeAdapter.class.isAssignableFrom(value)) {
Class<TypeAdapter<?>> typeAdapterClass = (Class<TypeAdapter<?>>) value;
typeAdapter = constructorConstructor.get(TypeToken.get(typeAdapterClass)).construct();
} else if (TypeAdapterFactory.class.isAssignableFrom(value)) {
Class<TypeAdapterFactory> typeAdapterFactory = (Class<TypeAdapterFactory>) value;
typeAdapter = constructorConstructor.get(TypeToken.get(typeAdapterFactory))
.construct()
.create(gson, fieldType);
} else {
throw new IllegalArgumentException(
"@JsonAdapter value must be TypeAdapter or TypeAdapterFactory reference.");
}
if (typeAdapter != null) {
typeAdapter = typeAdapter.nullSafe();
}
return typeAdapter;
}
示例3: serializeConfigurableProperties
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
private void serializeConfigurableProperties(JsonObject configJsonObject, Object configInstance, JsonSerializationContext jsonSerializationContext) {
List<Field> configurableFields = Arrays.stream(configInstance.getClass().getFields())
.filter(field -> field.getAnnotation(ConfigurableProperty.class) != null).collect(Collectors.toList());
configurableFields.forEach(field -> {
String fieldName = determineNameToUseForField(field);
Object fieldValue = ReflectionUtils.getValue(field, configInstance);
if (fieldValue != null) {
JsonElement fieldJsonObject;
if (field.getAnnotation(JsonAdapter.class) != null) {
try {
JsonSerializer customSerializer = (JsonSerializer) field.getAnnotation(JsonAdapter.class).value().newInstance();
fieldJsonObject = customSerializer.serialize(fieldValue, field.getType(), jsonSerializationContext);
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeReflectiveOperationException(e);
}
} else {
fieldJsonObject = jsonSerializationContext.serialize(fieldValue);
}
configJsonObject.add(fieldName, fieldJsonObject);
}
});
}
示例4: create
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
@SuppressWarnings("unchecked")
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
JsonAdapter annotation = targetType.getRawType().getAnnotation(JsonAdapter.class);
if (annotation == null) {
return null;
}
return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
示例5: getFieldAdapter
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
private TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
JsonAdapter annotation = field.getAnnotation(JsonAdapter.class);
if (annotation != null) {
TypeAdapter<?> adapter = getTypeAdapter(constructorConstructor, gson, fieldType, annotation);
if (adapter != null) return adapter;
}
return gson.getAdapter(fieldType);
}
示例6: create
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
JsonAdapter annotation = (JsonAdapter) targetType.getRawType().getAnnotation(JsonAdapter
.class);
if (annotation == null) {
return null;
}
return getTypeAdapter(this.constructorConstructor, gson, targetType, annotation);
}
示例7: getTypeAdapter
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
static TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson
gson, TypeToken<?> fieldType, JsonAdapter annotation) {
Class<?> value = annotation.value();
if (TypeAdapter.class.isAssignableFrom(value)) {
return (TypeAdapter) constructorConstructor.get(TypeToken.get((Class) value))
.construct();
}
if (TypeAdapterFactory.class.isAssignableFrom(value)) {
return ((TypeAdapterFactory) constructorConstructor.get(TypeToken.get((Class) value))
.construct()).create(gson, fieldType);
}
throw new IllegalArgumentException("@JsonAdapter value must be TypeAdapter or " +
"TypeAdapterFactory reference.");
}
示例8: getFieldAdapter
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
private TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
JsonAdapter annotation = (JsonAdapter) field.getAnnotation(JsonAdapter.class);
if (annotation != null) {
TypeAdapter<?> adapter = JsonAdapterAnnotationTypeAdapterFactory.getTypeAdapter(this
.constructorConstructor, gson, fieldType, annotation);
if (adapter != null) {
return adapter;
}
}
return gson.getAdapter((TypeToken) fieldType);
}
示例9: create
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
JsonAdapter annotation = targetType.getRawType().getAnnotation(JsonAdapter.class);
if (annotation == null) {
return null;
}
return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
示例10: getFieldAdapter
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
JsonAdapter annotation = field.getAnnotation(JsonAdapter.class);
if (annotation != null) {
TypeAdapter<?> adapter = getTypeAdapter(constructorConstructor, gson, fieldType, annotation);
if (adapter != null) return adapter;
}
return gson.getAdapter(fieldType);
}
示例11: create
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
Class<? super T> rawType = targetType.getRawType();
JsonAdapter annotation = rawType.getAnnotation(JsonAdapter.class);
if (annotation == null) {
return null;
}
return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
示例12: getTypeAdapter
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
@SuppressWarnings({ "unchecked", "rawtypes" }) // Casts guarded by conditionals.
TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
TypeToken<?> type, JsonAdapter annotation) {
Object instance = constructorConstructor.get(TypeToken.get(annotation.value())).construct();
TypeAdapter<?> typeAdapter;
if (instance instanceof TypeAdapter) {
typeAdapter = (TypeAdapter<?>) instance;
} else if (instance instanceof TypeAdapterFactory) {
typeAdapter = ((TypeAdapterFactory) instance).create(gson, type);
} else if (instance instanceof JsonSerializer || instance instanceof JsonDeserializer) {
JsonSerializer<?> serializer = instance instanceof JsonSerializer
? (JsonSerializer) instance
: null;
JsonDeserializer<?> deserializer = instance instanceof JsonDeserializer
? (JsonDeserializer) instance
: null;
typeAdapter = new TreeTypeAdapter(serializer, deserializer, gson, type, null);
} else {
throw new IllegalArgumentException(
"@JsonAdapter value must be TypeAdapter, TypeAdapterFactory, "
+ "JsonSerializer or JsonDeserializer reference.");
}
if (typeAdapter != null) {
typeAdapter = typeAdapter.nullSafe();
}
return typeAdapter;
}
示例13: getTypeAdapter
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
@SuppressWarnings({ "unchecked", "rawtypes" }) // Casts guarded by conditionals.
TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
TypeToken<?> type, JsonAdapter annotation) {
Object instance = constructorConstructor.get(TypeToken.get(annotation.value())).construct();
TypeAdapter<?> typeAdapter;
if (instance instanceof TypeAdapter) {
typeAdapter = (TypeAdapter<?>) instance;
} else if (instance instanceof TypeAdapterFactory) {
typeAdapter = ((TypeAdapterFactory) instance).create(gson, type);
} else if (instance instanceof JsonSerializer || instance instanceof JsonDeserializer) {
JsonSerializer<?> serializer = instance instanceof JsonSerializer
? (JsonSerializer) instance
: null;
JsonDeserializer<?> deserializer = instance instanceof JsonDeserializer
? (JsonDeserializer) instance
: null;
typeAdapter = new TreeTypeAdapter(serializer, deserializer, gson, type, null);
} else {
throw new IllegalArgumentException(
"@JsonAdapter value must be TypeAdapter, TypeAdapterFactory, "
+ "JsonSerializer or JsonDeserializer reference.");
}
if (typeAdapter != null && annotation.nullSafe()) {
typeAdapter = typeAdapter.nullSafe();
}
return typeAdapter;
}
示例14: deserialize
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
@Override
public WorkflowConfig deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
Class typeClass = (Class) type;
List<Field> additionalConfigFields = Arrays.stream(typeClass.getFields())
.filter(field -> field.getAnnotation(SectionConfig.class) != null).collect(Collectors.toList());
WorkflowConfig config = (WorkflowConfig) ReflectionUtils.newInstance(typeClass);
List<Field> configurableFields = Arrays.stream(typeClass.getFields())
.filter(field -> field.getAnnotation(ConfigurableProperty.class) != null).collect(Collectors.toList());
JsonObject configJsonObject = jsonElement.getAsJsonObject();
configurableFields.forEach(field -> {
String fieldName = determineNameToUseForField(field);
JsonElement fieldJsonObject = configJsonObject.get(fieldName);
if (fieldJsonObject != null) {
Object fieldValue;
if (field.getAnnotation(JsonAdapter.class) != null) {
JsonDeserializer customDeserializer = (JsonDeserializer) ReflectionUtils.newInstance(field.getAnnotation(JsonAdapter.class).value());
fieldValue = customDeserializer.deserialize(fieldJsonObject, field.getType(), jsonDeserializationContext);
} else {
fieldValue = jsonDeserializationContext.deserialize(fieldJsonObject, field.getType());
}
setFieldValue(field, config, fieldValue);
}
});
additionalConfigFields.forEach(field -> {
Object fieldConfig = jsonDeserializationContext.deserialize(jsonElement, field.getType());
setFieldValue(field, config, fieldConfig);
});
return config;
}
示例15: create
import com.google.gson.annotations.JsonAdapter; //導入依賴的package包/類
@SuppressWarnings({"rawtypes", "unchecked"})
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
JsonAdapter annotation = targetType.getRawType().getAnnotation(JsonAdapter.class);
if (annotation == null) {
return null;
}
return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}