[英]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编组/解编值对象(POJO),那么您还可以看看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.