Сравните значения из парсера JSON - PullRequest
1 голос
/ 12 октября 2011

Я пишу Java-программу с парсером JSON для получения некоторых данных.Моя проблема - сравнение значений из парсера json.Это мой код:

private ArrayList<HashMap<String, String>> listInfo = new ArrayList<HashMap<String, String>>();

public ArrayList<HashMap<String, String>> info() {
    //Get the data
    JSONObject json = JSONfunctions.getJSONfromURL(URL);
    try {
        //Get the elements
        HashMap<Integer, String> mapValueForCompare = new HashMap<Integer, String>();
        JSONArray data = json.getJSONArray("data");
        //Loop the array
        for (int i = 0; i < data.length(); i++) {
            HashMap<String, String> mapInfo = new HashMap<String, String>();
            JSONObject e = data.getJSONObject(i);
            mapInfo.put("id", e.getString("id"));
            mapInfo.put("title", e.getString("title"));
            mapInfo.put("value", e.getString("value"));
            int t = check(mapValueForCompare, mapInfo);
            if (t == 1) {
                mapInfo.put("isSame?", "yes");
            } else {
                mapInfo.put("isSame?", "no");
            }
            mapValueForCompare.put(i, e.getString("value"));
            listInfo.add(mapInfo);
        }
    } catch (JSONException e) {
        Log.e("log_tag", "Error parsing data " + e.toString());
    }
    return listInfo;
}

private int check(HashMap<Integer, String> mapValueForCompare, HashMap<String, String> mapInfo) {
    int result = -1;
    for (int i = 0; i < mapValueForCompare.size() - 1; i++) {
        if (mapValueForCompare.get(i) == mapInfo.get("value")) {
            result = 1;
        } else {
            result = 0;
        }
    }
    return result;
}

Вы видите, что я использую HashMap (mapValueForCompare), чтобы собрать все значения и сравнить каждое значение со значением нового HashMap (mapInfo).Результатом является только ответ «нет»!Почему это?Где моя ошибка?У тебя есть идея получше?Я больше ничего не могу найти.

1 Ответ

1 голос
/ 12 октября 2011

Изменение в вашем методе проверки:

if (mapInfoTest.get(i) == mapInfo.get("value"))

в if (mapInfoTest.get(i).equals(mapInfo.get("value")))

Вы можете упростить свой код, используя containsKey на своих картах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...