android - 将 JSON 响应的值存储在 arraylist 中,然后根据 JSONObject 输出过滤它们

标签 android json arraylist

我正在开发一个应用程序,当我使用正确的参数访问服务器时,我会在其中收到 JSON 响应。现在,我必须解析这些数据并将其存储在 arraylist 中,到这里我已经完成了,但是,现在我必须解析数据并将其存储在 arrayJSONObject。这是我想说的:以下是我得到的 JSON 响应:

{"rewards":[
{
"rewardID":"2",
"rewardType":"giftcard",
"rewardTitle":"$5 Starbucks Gift Card"
},
{
"rewardID":"3",
"rewardType":"giftcard",
"rewardTitle":"$5 Target Gift Card"
},
{
"rewardID":"24",
"rewardType":"miles",
"rewardTitle":"100 AmericanAirlines Advantage Miles"
},
{
"rewardID":"25",
"rewardType":"miles",
"rewardTitle":"100 US Airways Dividend Miles"
}
]
}

您可以看到 rewardType 参数具有不同的值,例如 "giftcard""miles"。我必须根据 JSONObjectrewardType 分别解析并将其存储在 arraylist 中以供进一步处理。 这是我为获取响应并将其存储在不同变量中所做的工作:

@Override
    protected String doInBackground(String... args) {
        HttpParams params = new BasicHttpParams();
        params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,
                HttpVersion.HTTP_1_1);
        HttpClient httpClient = new DefaultHttpClient(params);
        HttpPost post = new HttpPost(
                "API HERE");

        post.setHeader("Content-Type", "application/x-www-form-urlencoded");

        try {
            post.setEntity(new StringEntity("client_id=" + client_id + "&"
                    + "client_secret=" + clientSecretKey, HTTP.UTF_8));

            HttpResponse response = httpClient.execute(post);
            int i = response.getStatusLine().getStatusCode();
            System.out.println("HTTP Post status: "
                    + i);

            BufferedReader in = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent()));

            // SB to make a string out of the inputstream
            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) {
                sb.append(line + NL);
            }
            in.close();

            // the json string is stored here
            String result = sb.toString();
            System.out.println("Result Body: " + result);
            return result;

        } catch (Exception e) {
            // TODO: handle exception
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        JSONObject jObject;
        try {
            jObject = new JSONObject(result);

            JSONArray jSearchData = jObject.getJSONArray("rewards");

            for (int i = 0; i < jSearchData.length(); i++) {

                JSONObject objJson = jSearchData.getJSONObject(i);

                rewardID = objJson.getString("rewardID");
                rewardType = objJson.getString("rewardType");
                rewardTitle = objJson.getString("rewardTitle");

                  if (rewardType == "giftcard") {
                    System.out.println("Reward ID: " + rewardID);
                    System.out.println("Reward Type: " + rewardType);
                    System.out.println("Reward Tittle: " + rewardTitle);
                    System.out.println("Reward ImageFileName: "
                            + rewardImageFilename);
                    System.out.println("Reward Price: " + rewardPrice);
                }

            }

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

我们将不胜感激任何形式的帮助。

最佳答案

使用:

if (rewardType.equals("giftcard"))

关于android - 将 JSON 响应的值存储在 arraylist 中,然后根据 JSONObject 输出过滤它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014868/

相关文章:

java - 数组排列完毕后,如何使用 for 循环搜索元素?

android - 我的 FloatingActionButton 显示在我的 TextView 和图像下方

JSON 以自定义格式序列化日期(无法从字符串值构造 java.util.Date 的实例)

python - 尝试从 JSON 列表打印元素时出现关键错误

json - 使用 Powershell 从 Json 结构中提取值时出现问题

java - 在 Java 的 arrayList 中递增 Integer 的最佳方法

java - 当我删除某些内容时,ListView 不会刷新

android - 为什么我看到 : Unsatisfied constraints: CONNECTIVITY in JobScheduler debug info

android - 使用 OAuth2 安全验证移动访问的选项

java - 为什么不能在java中直接进行类型转换?