【问题标题】:json client in java for Restful service用于Restful服务的java中的json客户端
【发布时间】:2010-08-03 21:15:36
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: java web-services json rest


    【解决方案1】:

    有很多解析 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 解析器。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:
        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 数据。

        【讨论】:

          猜你喜欢
          • 2012-12-05
          • 2018-01-18
          • 1970-01-01
          • 2012-05-10
          • 1970-01-01
          • 1970-01-01
          • 2013-08-22
          • 2012-08-19
          • 1970-01-01
          相关资源
          最近更新 更多