java中的json客户端用于Restful服务

时间:2010-08-03 21:15:36

标签: java web-services json rest

通常我一直在使用xml Web服务,并使用JAXB来编组/解组xml。在这种情况下,我有一个用于生成类的xml架构,然后在运行时我只处理java对象而不是xml,因为解组是在我的封面下完成的。

在json中做类似的事情有哪些库?我必须进行一个http Get调用,返回一个json对象列表,我不确定我的java客户端应该是什么样子。这里的最佳做法是什么?

感谢。

3 个答案:

答案 0 :(得分:1)

有很多Java库可以解析JSON。最简单的一个是org.json。有关各种JSON解析库的列表,请查看(http://json.org

如果您已经使用JAXB来编组/解组值对象(PO​​JO),那么您还可以查看使用JAXB注释的Jackson来确定您的POJO在JSON中的表示应该是什么样子。 (http://jackson.codehaus.org/

基本上,您需要为JSON发出HTTP GET请求,使用JSON解析器解析请求,并将它们转换为Java中的方便表示形式。您可以结合使用Apache Commons HttpClient库和JSON解析器。

答案 1 :(得分:0)

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数据。

答案 2 :(得分:0)

如果您需要创建RESTful服务及其客户端,那么我更喜欢rest4j。您可以使用XML描述RESTful服务并实现您的服务,因为它是一个简单的Spring bean。然后,您还可以生成文档和java / python / php / c#客户端库。编组和解组是在引擎盖下进行的。

有一种方法可以灵活地将内部Java对象映射到外部JSON表示,例如重命名属性,仅导出属性的子集等。