【问题标题】:Parsing JSON into Java from Klout API从 Klout API 将 JSON 解析为 Java
【发布时间】:2011-09-23 04:01:47
【问题描述】:

我正在制作一个 Web 应用程序,用于返回 Twitter 关注者的 Klout 分数详细信息。工作流程如下:

  1. 从 Twitter API,获取 twitter_id 的关注者。例如:Sachin Tendulkar 的 48,000 个 ids 追随者。
  2. 获取从步骤 1 收到的 twitter_id 的 twitter 信息(屏幕名称、twitter_name、位置)。
  3. Klout API 获取 JSON 格式的 Klout 分数,然后将 JSON 解析为 Java。
  4. Klout API,获取 JSON 格式的 Klout 主题,然后将 JSON 解析为 Java。
  5. 将 Klout 和 Twitter 数据插入数据库。

我在将 JSON 解析为 Java 时遇到问题。请提出解决方案。 提前致谢。
科马尔

【问题讨论】:

    标签: java json parsing


    【解决方案1】:

    查看Direct Media Tips and Tricks 书籍的Setting up a Klout application 部分。它解释了如何使用dmt-klout 库来获取您正在寻找的信息。

    如果要重写库,可以查看源代码。 dmt-klout 库依赖于 json.org 类来解析 JSON 响应。例如:

    public User(JSONObject json) {
        nick = json.getString("nick");
        id = new UserId(json.getString("kloutId"));
        JSONObject scores = json.getJSONObject("score");
        bucket = scores.getString("bucket");
        score = scores.getDouble("score");
        JSONObject scoreDeltas = json.getJSONObject("scoreDeltas");
        dayChange = scoreDeltas.getDouble("dayChange");
        weekChange = scoreDeltas.getDouble("weekChange");
        monthChange = scoreDeltas.getDouble("monthChange");
    }
    

    在这种情况下,json 是使用查询用户时返回的String 创建的JSONObject。这个User 类也用于影响查询:

    public Influence(JSONObject json) {
        parseInfluence(json.getJSONArray("myInfluencers"), myInfluencers);
        parseInfluence(json.getJSONArray("myInfluencees"), myInfluencees);
    }
    
    private void parseInfluence(JSONArray array, List<User> list) {
        int count = array.length();
        for (int i = 0; i < count; i++) {
            list.add(new User(
                array.getJSONObject(i).getJSONObject("entity")
                .getJSONObject("payload")));
        }
    }
    

    检索主题的方式略有不同:

    public List<Topic> getTopics(UserId id) throws IOException {
        List<Topic> topics = new ArrayList<Topic>();
        JSONArray array = new JSONArray(KloutRequests.sendRequest(String.format(
                KloutRequests.TOPICS_FROM_KLOUT_ID, getUserId(id).getId(), apiKey)));
        int n = array.length();
        for (int i = 0; i < n; i++) {
            topics.add(new Topic(array.getJSONObject(i)));
        }
        return topics;
    }
    

    Topic 类的构造函数如下所示:

    public Topic(JSONObject json) {
        id = json.getLong("id");
        name = json.getString("name");
        displayName = json.getString("displayName");
        slug = json.getString("slug");
        displayType = json.getString("displayType");
        imageUrl = json.getString("imageUrl");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-07
      • 2012-04-18
      • 2014-12-06
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多