首页 > 解决方案 > 使用 java 访问 json 对象中的列表

问题描述

我有以下 json 字符串,并想使用 Java 访问 alsoKnownAs 列表。我可以用 getString 作为名称,我已经尝试用 getJSONArray 作为alsoKnownAs,但它并不能很好地锻炼

{\"name\":\"moses\",\"alsoKnownAs\":[\"njai\", \"njenga\",\"musa\"]}

我可以访问下面的名称,但我不能等效于 getString 方法,它会返回一个字符串列表或等效于 getJSONArray 的字符串列表

    public static Person parsePersonJson(String json) {

            JSONObject currentPerson;
            String name;

            try {
                currentPerson = new JSONObject(json);

                // so I can access the name like

                name = currentPerson.getString("name");

               //I was trying this to get the list but figure out I was using a list of json objects, so not how to get the list of stings

           JSONArray arrayKnownAs = names.getJSONArray("alsoKnownAs");
                List<String> alsoKnownAs= new ArrayList<>();

                for (int i = 0, l = arrayKnownAs.length(); i < l; i++) {
                    String origin;
                    origin = arrayKnownAs[i];
                    alsoKnownAs.add(origin);
                }



               Person thisPerson =  new Person(

                //I instantiate person object here

                );
                return thisPerson;

            } catch (org.json.JSONException e) {
    // error
            }
            return null;
        }

标签: javajson

解决方案


如果其他人被困在这里,原来我走在正确的轨道上,我可以使用 getJSONArray 访问列表,但是在为每个成员迭代时,我使用 getString

 public static Person parsePersonJson(String json) {

            JSONObject currentPerson;
            String name;

            try {
                currentPerson = new JSONObject(json);

                // so I can access the name like

                name = currentPerson.getString("name");

                List<String> alsoKnownAs= new ArrayList<>();

                //use getJSONArray to get the list

                JSONArray arrayKnownAs = currentPerson.getJSONArray("alsoKnownAs");

                for (int i = 0, l = arrayKnownAs.length(); i < l; i++) {

                 //This is where I was getting it wrong, i needed to use getString to access list items

                  alsoKnownAs.add(arrayKnownAs.getString(i));
                   }



               Person thisPerson =  new Person(

                //I instantiate person object here

                );
                return thisPerson;

            } catch (org.json.JSONException e) {
             // error
            }
            return null;
        }

推荐阅读