簡體   English   中英

Java中的json客戶端提供Restful服務

[英]json client in java for Restful service

通常,我一直在使用xml Web服務,並使用JAXB來編組/解組xml。 在這種情況下,我有一個用於生成類的xml模式,然后在運行時我只處理java對象而不是xml,因為解組工作是在我的幕后完成的。

存在哪種庫可以在json中執行類似操作? 我必須進行一個http Get調用,該調用返回json對象的列表,但我不確定我的Java客戶端應該是什么樣子。 這里的最佳做法是什么?

謝謝。

那里有很多解析JSON的Java庫。 最簡單的一種是org.json。 有關各種JSON解析庫的列表,請查看( http://json.org

如果您使用JAXB編組/解編值對象(PO​​JO),那么您還可以看看Jackson,它使用JAXB批注來確定POJO在JSON中的表示形式。 http://jackson.codehaus.org/

本質上,您將需要為JSON發出HTTP GET請求,使用JSON解析器解析該請求並將其轉換為Java中的便捷表示形式。 您可以結合使用Apache Commons HttpClient庫和JSON解析器。

String url = "www.abc.com/products/1"; // 1 = product number
DefaultHttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
request.addHeader("User-Agent", USER_AGENT);
request.addHeader(BasicScheme.authenticate(
new UsernamePasswordCredentials("username", "password"), "UTF-8", false));
HttpResponse response = client.execute(request);
System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
data = new String(rd.readLine());

現在,您必須創建JSON庫的對象來解析數據或獲取特定數據。

try {
        obj = new JSONObject(data);
        System.out.println("Final Data" + data);
        String category = obj.getString("product");
        System.out.println("category " + category);
}
} catch (JSONException ex) {
        System.out.println(ex);
    }

使用org.codehaus.jettison.json庫處理JSON數據。

如果您需要同時創建RESTful服務及其客戶端,則我更喜歡rest4j。 您可以使用XML描述您的RESTful服務,並實現服務,因為它是普通的Spring bean。 然后,您還可以生成文檔和java / python / php / c#客戶端庫。 在引擎蓋下進行封送和解組。

還有一種方法可以靈活地將內部Java對象映射到外部JSON表示形式,例如重命名屬性,僅導出屬性的子集等。

暫無
暫無

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

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