簡體   English   中英

google-http-java-client json更新現有對象

[英]google-http-java-client json update existing object

我正在嘗試在Android上使用google-http-java-client並解析來自我服務器的JSON響應。 這樣做是使用以下代碼(由項目示例提供)

    private static final HttpTransport HTTP_TRANSPORT = AndroidHttp.newCompatibleTransport();
    private static final JsonFactory JSON_FACTORY = new JacksonFactory();
    HttpRequestFactory requestFactory = HTTP_TRANSPORT
                .createRequestFactory(new HttpRequestInitializer() {
                    @Override
                    public void initialize(HttpRequest request) {
                        request.setParser(new JsonObjectParser(JSON_FACTORY));
                    }
                });
    HttpRequest request = requestFactory.buildGetRequest(new GenericUrl(url + paramsList));
    HttpResponse response = request.execute();

一切都適用於新對象

result = response.parseAs(PxUser.class);

但是我需要使用json字符串中的數據更新現有對象。 只有傑克遜,我可以使用以下代碼,但對於Google客戶端,我找不到任何解決方案。

InputStream in = -get-http-reponse-
ObjectMapper mapper = new ObjectMapper();
ObjectReader reader = mapper.readerForUpdating(MySingleton.getInstance());
reader.readValue(InputStream in);

所以我需要一種方法來更新現有對象,就像這個傑克遜示例一樣,但是要使用客戶端。

有辦法嗎? 我必須使用jackson-databind.jar嗎? 我怎樣才能做到這一點? 提前致謝

PS:如果需要,我可以切換到gson,沒問題

它取決於接收API調用的端點,以及該請求的外觀。

Google HTTP Java客戶端可以為您處理呼叫,對對象進行編碼和解碼,指數補償等過程。 由您決定創建滿足您要求的請求以及服務器期望其外觀的請求。

您發出請求的API可能希望通過PUT請求進行對象更新。 更新后的對象可能是請求的內容,以某種特定格式編碼。 讓我們假設JSON,因為您正在解析JSON響應。 因此,出於示例目的,假設您要請求一個對象,對其進行修改,然后將其發送回去。

首先,獲取資源並將其解析為對象:

PxUser myUser = response.parseAs(PxUser.class);

然后以某種方式修改對象

myUser.setName("Frodo Baggins");

現在,您要將其作為PUT請求中的JSON對象發送回服務器:

// httpbin.org is a wonderful URL to test API calls against as it returns whatever if received.
GenericUrl url = new GenericUrl("http://httpbin.org/put");
JsonHttpContent content = new JsonHttpContent(new JacksonFactory(), myUser);
HttpRequest request = requestFactory.buildPutRequest(url, content);
HttpResponse response = request.execute();
System.out.println(response.parseAsString());

編碼和更新內容的方式完全取決於您和API的規范。 如果要創建也接收呼叫的服務器,這特別容易。

如果您使用的是預先存在的API,則可能要更新特定問題的問題(API“ x”要求的響應看起來像Blah;如何在google-http-java-client中執行此操作)。

如果您使用的是Google API,則需要使用google-api-java-client ,它可以為您完成所有這些工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM