首页 > 解决方案 > 如果使用for循环不为null,如何检索ArrayList中元素的值?

问题描述

在我的应用程序中有数据刮板,它从 检索有关电影的信息themoviedb.org api,我要检索logo_pathproduction_companies一项是提供为 的JSONArray,但也有value可能logo_pathnull(示例如下)

我的目标是实现以下目标:-

例如JSONArray提供 6 个元素(6 个生产公司)

如果列表valuelogo_path最后一个元素(索引 5)的null值是,那么我想检索第一个元素(索引 0)的值,它不是null

如果logo_path列表的最后一个元素(索引 5)的值不是 null,那么我想检索最后一个元素(索引 5)的值

如果第一个是null并且最后一个也是null,那么我想检索value介于两者之间的那个不是null

更新

生产公司示例

"production_companies":[
{"id":429,"logo_path":"/2Tc1P3Ac8M479naPp1kYT3izLS5.png","name":"DC Comics","origin_country":"US"},
{"id":923,"logo_path":"/5UQsZrfbfG2dYJbx8DxfoTr2Bvu.png","name":"Legendary Pictures","origin_country":"US"},
{"id":9996,"logo_path":"/3tvBqYsBhxWeHlu62SIJ1el93O7.png","name":"Syncopy","origin_country":"GB"},
{"id":118865,"logo_path":null,"name":"Isobel Griffiths","origin_country":"GB"},
{"id":9993,"logo_path":"/2Tc1P3Ac8M479naPp1kYT3izLS5.png","name":"DC Entertainment","origin_country":"US"},
{"id":174,"logo_path":"/IuAlhI9eVC9Z8UQWOIDdWRKSEJ.png","name":"Warner Bros. Pictures","origin_country":"US"}]

我的代码

try {
                JSONArray production_companies = jObject.getJSONArray("production_companies");
                for (int i = 0; i < production_companies.length(); i++) {
                    if (jObject.getString(name: "logo_path").equalsIgnoreCase(string: "null")) // when the "logo_path" is "null"
                        movie.setStudioUrl(baseUrl + MizLib.getStudioUrlSize (mContext) + MizLib.getStringFromJSONObject (production_companies.getJSONObject (i - i), "logo_path", "")); // set the the first production company

                    else if (!jObject.getString ("logo_path").equalsIgnoreCase ("null")) // when the "logo_path" is not "null"
                        movie.setStudioUrl(baseUrl + MizLib.getStudioUrlSize (mContext) + MizLib.getStringFromJSONObject (production_companies.getJSONObject (i+1), "logo_path", "")); // set the the first production company

                }
            } catch (JSONException e) {}

api提供的数据类型

production_companies array[object]

name             string

id               integer

logo_path        string or null

origin_country   string

标签: javaandroid

解决方案


if(jObject.getString("logo_path").equalsIgnoreCase("null"))

如果要检查 getString("logo_path") 是否返回 null,则此行正在检查它是否为字符串文字“null”,那么您需要将其更改为

if(jObject.getString("logo_path") == null)

推荐阅读