![](/img/trans.png)
[英]How can I update an object metadata through Google Cloud Storage using Python aiohttp PATCH request?
[英]How should I create a custom deserializer for Google Storage object?
如果我不創建自定義工廠,這就是錯誤
無法為接口 com.google.cloud.storage.Storage 調用無參數構造函數。 使用 Gson 為此類型注冊 InstanceCreator 可能會解決此問題。
這是我的帶有自定義工廠的數據轉換器的代碼
import com.google.cloud.storage.Storage;
/**
* Helper for working with JsonDataConverter for Random service.
*/
public class RandomServiceJsonDataConverterHelper {
/**
* Creates json data converter.
*/
public static JsonDataConverter createWorkflowServiceJsonDataConverter() {
return new JsonDataConverter(RandomServiceJsonDataConverterHelper::registerFactories);
}
private static GsonBuilder registerFactories(GsonBuilder gsonBuilder) {
return gsonBuilder.registerTypeAdapter(Storage.class, new StorageDeserialiser());
}
}
這是存儲解串器的代碼
public class StorageDeserialiser implements JsonDeserializer<Storage>, JsonSerializer<Storage> {
@Override
public Storage deserialize(
JsonElement jsonElement,
Type type,
JsonDeserializationContext jsonDeserializationContext
) {
//what should i do here ?
}
@Override
public JsonElement serialize(Storage storage, Type typeOfSrc, JsonSerializationContext context) {
Gson gson = new Gson();
return new JsonPrimitive(gson.toJson(storage));
}
}
帶有評論的部分是我必須為存儲 object 添加反序列化器的地方。有人可以幫我解決這個問題嗎?
您不應該嘗試序列化授權服務 object,因為它是一個功能接口並且不保存數據。 存儲 object 用於創建授權服務 object ,其中對象是 GCS 用於保存數據的原語。 必須為每個服務創建存儲 object,該接口用於獲取和設置對象。 如果有人希望共享服務 object,那么他們正在尋找的概念是依賴注入,它允許他們跨邏輯范圍共享單個 object,但在同一應用程序/環境中。
您應該遵循“上傳對象” ,他們可以調用 storage.createFrom 並輸入一個 ByteArrayInputStream,它可以包含 JSON 字符串而不是 String content = "Hello world." 在示例中使用。
GCS 對象不需要自定義反序列化器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.