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

java中用于Restful服务的json客户端,java,web-services,json,rest,Java,Web Services,Json,Rest,通常,我一直在使用XMLWeb服务,并使用JAXB对xml进行编组/解编组。在本例中,我有一个用于生成类的xml模式,然后在运行时我只处理java对象,而不处理xml,因为解组是在我的掩护下完成的 有什么样的库可以在json中执行类似的操作?我必须进行一个http Get调用,返回一个json对象列表,我不确定我的java客户机应该是什么样子。这里的最佳实践是什么 谢谢。有很多Java库解析JSON。最简单的一个是org.json提供的。有关各种JSON解析库的列表,请查看() 如果您已经使用J

通常,我一直在使用XMLWeb服务,并使用JAXB对xml进行编组/解编组。在本例中,我有一个用于生成类的xml模式,然后在运行时我只处理java对象,而不处理xml,因为解组是在我的掩护下完成的

有什么样的库可以在json中执行类似的操作?我必须进行一个http Get调用,返回一个json对象列表,我不确定我的java客户机应该是什么样子。这里的最佳实践是什么


谢谢。

有很多Java库解析JSON。最简单的一个是org.json提供的。有关各种JSON解析库的列表,请查看()

如果您已经使用JAXB对值对象(POJO)进行了marshall/unmarshall,那么您还可以看看Jackson,它使用JAXB注释来确定POJO在JSON中的表示形式。()

实际上,您需要为JSON发出HTTP GET请求,使用JSON解析器解析请求,并将其转换为方便的Java表示形式。您可以结合使用ApacheCommonsHttpClient库和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服务,并将服务实现为一个普通的Springbean。然后还可以生成文档和java/python/php/c#客户端库。编组和解编在引擎盖下完成

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