示例#1
0
  /**
   * Parses the supplied JSON string and returns a list of comments.
   *
   * @param json
   * @return
   * @throws JSONException
   */
  static List<Comment> parseComments(String json) throws JSONException {
    List<Comment> comments = new ArrayList<Comment>();
    /*
     * null
     * Array containing arrays of comments
     * numberOfComments
     */
    JSONArray jsonComments = new JSONObject(json).getJSONObject("result").getJSONArray("1");
    int count = jsonComments.length();
    for (int i = 0; i < count; i++) {
      Comment comment = new Comment();
      JSONObject jsonComment = jsonComments.getJSONObject(i);
      // TODO These examples are out of date and need updating
      /*
       * null
       * "gaia:17919762185957048423:1:vm:11887109942373535891", -- ID?
       * "REVIEWERS_NAME",
       * "1343652956570", -- DATE?
       * RATING,
       * null
       * "COMMENT",
       * null,
       * "VERSION_NAME",
       * [ null,
       * "DEVICE_CODE_NAME",
       * "DEVICE_MANFACTURER",
       * "DEVICE_MODEL"
       * ],
       * "LOCALE",
       * null,
       * 0
       */
      // Example with developer reply
      /*
       * [
       * null,
       * "gaia:12824185113034449316:1:vm:18363775304595766012",
       * "Micka�l",
       * "1350333837326",
       * 1,
       * "",
       * "Nul\tNul!! N'arrive pas a scanner le moindre code barre!",
       * 73,
       * "3.2.5",
       * [
       * null,
       * "X10i",
       * "SEMC",
       * "Xperia X10"
       * ],
       * "fr_FR",
       * [
       * null,
       * "Prixing fonctionne pourtant bien sur Xperia X10. Essayez de prendre un minimum de recul, au moins 20 � 30cm, �vitez les ombres et les reflets. N'h�sitez pas � nous �crire sur [email protected] pour une assistance personnalis�e."
       * ,
       * null,
       * "1350393460968"
       * ],
       * 1
       * ]
       */
      String uniqueId = jsonComment.getString("1");
      comment.setUniqueId(uniqueId);
      String user = jsonComment.optString("2");
      if (user != null && !"".equals(user) && !"null".equals(user)) {
        comment.setUser(user);
      }
      comment.setDate(parseDate(jsonComment.getLong("3")));
      comment.setRating(jsonComment.getInt("4"));
      String version = jsonComment.optString("7");
      if (version != null && !"".equals(version) && !version.equals("null")) {
        comment.setAppVersion(version);
      }

      JSONObject jsonCommentReview = jsonComment.optJSONObject("5");
      String commentLang = jsonCommentReview.getString("1");
      String commentText = jsonCommentReview.getString("3");
      String commentTitle = jsonCommentReview.getString("2");

      if (commentTitle.length() == 0) {
        // Title field is empty, see if the title is part of the comment text
        String originalTitleAndComment[] = commentText.split("\\t");
        if (originalTitleAndComment.length == 2) {
          commentTitle = originalTitleAndComment[0];
          commentText = originalTitleAndComment[1];
        }
      }

      comment.setLanguage(commentLang);
      comment.setOriginalText(commentText);
      // overwritten if translation is available
      comment.setText(commentText);
      comment.setOriginalTitle(commentTitle);
      comment.setTitle(commentTitle);

      JSONObject translation = jsonComment.optJSONObject("11");
      if (translation != null) {
        String displayLanguage = Locale.getDefault().getLanguage();
        String translationLang = translation.getString("1");

        if (translation.has("2")) {
          String translationTitle = translation.getString("2");
          if (translationLang.contains(displayLanguage)) {
            comment.setTitle(translationTitle);
          }
        }
        // Apparently, a translation body is not always provided
        // Possibly happens if the translation fails or equals the original
        if (translation.has("3")) {
          String translationText = translation.getString("3");
          if (translationLang.contains(displayLanguage)) {
            comment.setText(translationText);
          }
        }
      }

      JSONObject jsonDevice = jsonComment.optJSONObject("8");
      if (jsonDevice != null) {
        String device = jsonDevice.optString("3");
        JSONArray extraInfo = jsonDevice.optJSONArray("2");
        if (extraInfo != null) {
          device += " " + extraInfo.optString(0);
        }
        comment.setDevice(device.trim());
      }

      JSONObject jsonReply = jsonComment.optJSONObject("9");
      if (jsonReply != null) {
        Comment reply = new Comment(true);
        reply.setText(jsonReply.getString("1"));
        reply.setDate(parseDate(jsonReply.getLong("3")));
        reply.setOriginalCommentDate(comment.getDate());
        comment.setReply(reply);
      }

      comments.add(comment);
    }

    return comments;
  }
示例#2
0
  /**
   * Parses the supplied JSON string and returns a list of comments.
   *
   * @param json
   * @return
   * @throws JSONException
   */
  static List<Comment> parseComments(String json) throws JSONException {
    List<Comment> comments = new ArrayList<Comment>();
    /*
     * null
     * Array containing arrays of comments
     * numberOfComments
     */
    JSONArray jsonComments = new JSONObject(json).getJSONObject("result").getJSONArray("1");
    int count = jsonComments.length();
    for (int i = 0; i < count; i++) {
      Comment comment = new Comment();
      JSONObject jsonComment = jsonComments.getJSONObject(i);
      // TODO These examples are out of date and need updating
      /*
       * null
       * "gaia:17919762185957048423:1:vm:11887109942373535891", -- ID?
       * "REVIEWERS_NAME",
       * "1343652956570", -- DATE?
       * RATING,
       * null
       * "COMMENT",
       * null,
       * "VERSION_NAME",
       * [ null,
       * "DEVICE_CODE_NAME",
       * "DEVICE_MANFACTURER",
       * "DEVICE_MODEL"
       * ],
       * "LOCALE",
       * null,
       * 0
       */
      // Example with developer reply
      /*
       * [
       * null,
       * "gaia:12824185113034449316:1:vm:18363775304595766012",
       * "Micka�l",
       * "1350333837326",
       * 1,
       * "",
       * "Nul\tNul!! N'arrive pas a scanner le moindre code barre!",
       * 73,
       * "3.2.5",
       * [
       * null,
       * "X10i",
       * "SEMC",
       * "Xperia X10"
       * ],
       * "fr_FR",
       * [
       * null,
       * "Prixing fonctionne pourtant bien sur Xperia X10. Essayez de prendre un minimum de recul, au moins 20 � 30cm, �vitez les ombres et les reflets. N'h�sitez pas � nous �crire sur [email protected] pour une assistance personnalis�e."
       * ,
       * null,
       * "1350393460968"
       * ],
       * 1
       * ]
       */
      String user = jsonComment.optString("2");
      if (user != null && !"".equals(user) && !"null".equals(user)) {
        comment.setUser(user);
      }
      comment.setDate(parseDate(jsonComment.getLong("3")));
      comment.setRating(jsonComment.getInt("4"));
      String version = jsonComment.optString("7");
      if (version != null && !"".equals(version) && !version.equals("null")) {
        comment.setAppVersion(version);
      }
      comment.setText(jsonComment.optJSONObject("5").getString("3"));
      JSONObject jsonDevice = jsonComment.optJSONObject("8");
      if (jsonDevice != null) {
        String device = jsonDevice.optString("3");
        JSONArray extraInfo = jsonDevice.optJSONArray("2");
        if (extraInfo != null) {
          device += " " + extraInfo.optString(0);
        }
        comment.setDevice(device.trim());
      }

      JSONArray jsonReply = jsonComment.optJSONArray("11");
      if (jsonReply != null) {
        Comment reply = new Comment(true);
        reply.setText(jsonReply.getString(1));
        reply.setReplyDate(parseDate(jsonReply.getLong(3)));
        reply.setDate(comment.getDate());
        comment.setReply(reply);
      }

      comments.add(comment);
    }

    return comments;
  }