@Override
  protected GetPlayerDataApiCallResult parseJsonObject(JSONObject json)
      throws JSONException, ParsingException {
    MyLog.entry();

    final GetPlayerDataApiCallResult model = new GetPlayerDataApiCallResult();
    final int res = json.getInt("res");
    model.setRes(res);

    if (model.isResOk()) {
      final CapturedPlayerInfoModel playerInfo = new CapturedPlayerInfoModel();
      // "friendMax": 30, "cardMax": 30, "name": "NeraudMule", "lv": 19, "exp": 29209, "cost": 32,
      // "sta": 26, "sta_max": 26, "gold": 5, "coin": 63468, "curLvExp": 27188, "nextLvExp": 30954,
      playerInfo.setLastUpdate(new Date());
      playerInfo.setFriendMax(json.getInt("friendMax"));
      playerInfo.setCardMax(json.getInt("cardMax"));
      playerInfo.setName(json.getString("name"));
      playerInfo.setRank(json.getInt("lv"));
      playerInfo.setExp(json.getLong("exp"));
      playerInfo.setCostMax(json.getInt("cost"));
      playerInfo.setStamina(json.getInt("sta"));
      playerInfo.setStaminaMax(json.getInt("sta_max"));
      playerInfo.setStones(json.getInt("gold"));
      playerInfo.setCoins(json.getLong("coin"));
      playerInfo.setCurrentLevelExp(json.getLong("curLvExp"));
      playerInfo.setNextLevelExp(json.getLong("nextLvExp"));
      playerInfo.setRegion(region);

      model.setPlayerInfo(playerInfo);

      // "card"
      final List<MonsterModel> monsters = new ArrayList<MonsterModel>();
      final JSONArray cardResults = json.getJSONArray("card");
      for (int i = 0; i < cardResults.length(); i++) {
        MyLog.info(" - card #" + i + " : " + cardResults.get(i));
        final Object cardResult = cardResults.get(i);

        final MonsterModel monster;
        if (cardResult instanceof JSONObject) {
          monster = parseMonsterFromObject((JSONObject) cardResult);
        } else {
          monster = parseMonsterFromArray((JSONArray) cardResult);
        }

        monsters.add(monster);
      }
      model.setMonsterCards(monsters);

      // "friends"
      final List<PADCapturedFriendModel> friends = new ArrayList<PADCapturedFriendModel>();
      final JSONArray friendResults = json.getJSONArray("friends");
      for (int i = 0; i < friendResults.length(); i++) {
        final JSONArray friendResult = (JSONArray) friendResults.get(i);
        final PADCapturedFriendModel friend = parseFriend(friendResult);

        friends.add(friend);
      }
      model.setFriends(friends);
    }

    MyLog.exit();
    return model;
  }