使用数组对象获取索引值并存储在arraylist中

时间:2013-02-20 10:19:32

标签: android arraylist arrays

  [  {
        "question_id": 13,
        "creation_date": 10,
        "name": " certain degrees",
        "tags": [
            "android",
            "sensor"
        ],
.....
...}

]

这是我要获取标签数组的api,标签数组只包含索引和值,我想使用数组对象获取数组,最后存储在数组列表中,我试过但是没有得到错误已经发生了。

02-20 15:45:37.323: I/System.out(1165): org.json.JSONException: Value android at 0 of type java.lang.String cannot be converted to JSONObject

任何人都可以帮我解决这个问题。

tagarray = questionobj.getJSONArray("tags");


        for(int j=0;j<tagarray.length();j++){



//tagobject = tagarray.getJSONObject(j);//..if i comment this line the full array list is displaying but i need for each question allocated tags to display..am i clear.. 
            //if(tagobject!=null){
            tagname.add(tagarray.getString(j));
            ///tagname.add(0, null);
            //} 
        }

4 个答案:

答案 0 :(得分:0)

您的json格式不正确 试试这样;

{"question":
{"question_id": "13", 
 "name": "certain degrees", 
 "tags": [{"android":"N", "sensor":"Y"}]
 }}

您可以使用http://jsonviewer.stack.hu/,以确保更正您的json数据

答案 1 :(得分:0)

我建议你试试这段代码,

import org.json.JSONArray;
import org.json.JSONObject;

public class Main {

    public static void main(String[] args) {
        String text = "[  { \"question_id\": 13, \"creation_date\": 10, \"name\": \"certain degrees\", \"tags\": [ \"android\", \"sensor\" ] } ]";

        System.out.println(text);

        JSONArray jsonArray = new JSONArray(text);

        JSONObject jsonObjetc = jsonArray.getJSONObject(0);

        JSONArray tagarray = jsonObjetc.getJSONArray("tags");

        System.out.println(tagarray);

        for(int j=0;j<tagarray.length();j++){
            System.out.println(tagarray.getString(j));
        }
    }
}
祝你好运,Aron

答案 2 :(得分:0)

试试这个,

   ArrayList<String> list = new ArrayList<String>();

String text = "[  { \"question_id\": 13, \"creation_date\": 10, \"name\": \"certain degrees\", \"tags\": [ \"android\", \"sensor\" ] } ]";
  try {
        JSONArray jarray = new JSONArray(text);

        for (int i = 0; i < jarray.length(); i++) {
            JSONArray j_array = jarray.getJSONObject(i)
                    .getJSONArray("tags");

            for (int j = 0; j < j_array.length(); j++) {
                String str = j_array.getString(j);

                list.add(str);

            }

        }
    } catch (Exception e) {

    }

答案 3 :(得分:0)

试试这个

tagarray = questionobj.getJSONArray(“tags”);

    for(int j=0;j<tagarray.length();j++)
    {
        tagname.add(tagarray.getJSONObject(j).getString("android"));         
    }