java - 将 JSON 解析为自定义 ArrayList,只返回最后一项?

标签 java android json listview arraylist

我发现这有点奇怪,我正在从/assets 文件夹中的文件解析一些 JSON。我已经设置了一个自定义 ArrayList。现在,当我尝试将 ArrayList 中的数据添加到 ListView 或微调器(同一适配器)时,它只显示最后一项。这是我的代码:

我的解析方法:

public ArrayList<ShopName> parseJSON(String json) {

    ArrayList<ShopName> shop = new ArrayList<>();
    ShopName item = new ShopName();

    Log.d(TAG, json);
    try {

        JSONArray jArray = new JSONArray(json);

        for (int i=0; i < jArray.length();i++) {
            JSONObject jObject = jArray.getJSONObject(i);
            item.setFromCurrency(jObject.getString("from"));
            item.setToCurrency(jObject.getString("to"));
            item.setRate(jObject.getString("cost"));
            data.add(item);
        }
    } catch (JSONException jen) {
        jen.printStackTrace();
    }
    return shop;
}

我不太确定我的错误在哪里。我是否错误地解析了它,也许错误地存储了它?我有一种感觉,这是我的 ArrayList,但我确定我应该做什么来修复它,我尝试过使用不同的适配器,并搜索 StackOverflow,但它们都有不同的问题,所以现在很难缩小范围。

非常感谢您对此的帮助。谢谢。

最佳答案

public ArrayList<Data> parseJSON(String json) {

    ArrayList<Data> data = new ArrayList<>();
    // Data item = new Data();  // Move this into for loop

    Log.d(TAG, json);
    try {

        JSONArray jArray = new JSONArray(json);

        for (int i=0; i < jArray.length();i++) {
            Data item = new Data();
            JSONObject jObject = jArray.getJSONObject(i);
            item.setFromCurrency(jObject.getString("from"));
            item.setToCurrency(jObject.getString("to:"));
            item.setRate(jObject.getString("rate"));
            data.add(item);
        }
    } catch (JSONException je) {
        Log.d(TAG, je.getMessage());
    }
    return data;
}

关于java - 将 JSON 解析为自定义 ArrayList,只返回最后一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29190012/

相关文章:

java - 正则表达式查找具有唯一数字的数字

java - Android:编辑以编程方式添加的 View

java - TreeSet/TreeMap 等同于 HashSet/HashMap(自定义哈希)

java - 梯度配置错误

json - 使用 Gson 解析时跳过级别

java - 我的 worklight.properties 文件在哪里?

android - 在 Android 中单击 FCM 通知后打开 Activity

android - Android应用程序的陷阱

php - 将 JSON 从 PHP 返回到 JavaScript?

javascript - 使用 xml2js parseString 返回值