Json数组解析在Android中始终为空结果 [英] Json array parsing always has null result in Android

查看:110
本文介绍了Json数组解析在Android中始终为空结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何解析这个json数组?

How I can parse this json array?

{"1":
{"0":"3","id_disc":"3","1":"Дослідження і проектування компютерних систем","name":"Дослідження і проектування компютерних систем","2":"ДПКМС ","s_name":"ДПКМС "}
,"2":
{"0":"5","id_disc":"5","1":"Цивільний захист і охорона праці в галузі","name":"Цивільний захист і охорона праці в галузі","2":"ЦЗ і ОП","s_name":"ЦЗ і ОП"}
,"3":
{"0":"1","id_disc":"1","1":"Дослідження і проектування  інтелектуальних систем (Лекція)","name":"Дослідження і проектування  інтелектуальних систем (Лекція)","2":"ДіПІС","s_name":"ДіПІС"}
}

我正在尝试这种方法,但是我总是得到空结果.

I was trying this method, but I always have null result.

String[] sA = new String[100];
try {
    JSONArray cast = getDisc(paraaams).getJSONArray(" ");
    for (int i=0; i<cast.length(); i++) {
        JSONObject disc = cast.getJSONObject(i);
        sA[i-1] = disc.getString("name");
    }
}catch (JSONException e){}


           // sA[0]=getDisc(paraaams).toString();

     ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
                android.R.layout.simple_list_item_1, sA);

        listView.setAdapter(adapter);

public JSONArray getDisc(Object params[]){
        HTTPWorker httpWorker=new HTTPWorker();
            JSONArray mjson =new JSONArray();
        String s = httpWorker.doInBackground(params);
try {
    mjson = new JSONArray(s);
    Log.e("JSONinClass ",mjson.toString());

}catch (JSONException e){}

        return mjson;

我想我尝试像json对象一样解析它,但是我不知道如何正确处理json数组.

I think i try to parse it like json object, but i don't know how correct work with json arrays.

感谢帮助:)

我的ListFragment:

my ListFragment:

public class MyFilesActivity extends android.app.Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.activity_myfiles, null);

        ListView listView = (ListView) rootView.findViewById(R.id.listView);
        String[] sA = new String[100];

        JSONObject jsonObject = null;
        try {
            jsonObject = new JSONObject(getDisc(paraaams).toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }
        int i =0;
        Iterator<String> iterator = jsonObject.keys();
        while (iterator.hasNext()) {
            String key = iterator.next();
            try {
                if (jsonObject.has(key)) {
                    JSONObject value = jsonObject.getJSONObject(key);
                    // value is another JSONObject where you can get the "name" from
                        String name = value.getString("name");
                    sA[i]=name;
                        Log.e("value= ", name);
                    i+=1;
                }
            } catch (JSONException e) {
                // Something went wrong!
                e.printStackTrace();
            }
        }
           // sA[0]=getDisc(paraaams).toString();
     ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
                android.R.layout.simple_list_item_1, sA);
        listView.setAdapter(adapter);
    return rootView;
    }

我把它剪了一点,去掉了,对这个问题并不重要:)

I cut it a bit, removed it is not important for the question :)

推荐答案

尝试一下:

please check below changes replace array to arraylist



  public class MyFilesActivity extends android.app.Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.activity_myfiles, null);

            ListView listView = (ListView) rootView.findViewById(R.id.listView);
            ArrayList<String> sA = new ArrayList<>();

            JSONObject jsonObject = null;
            try {
                jsonObject = new JSONObject(getDisc(paraaams).toString());
            } catch (JSONException e) {
                e.printStackTrace();
            }

            Iterator<String> iterator = jsonObject.keys();
            while (iterator.hasNext()) {
                String key = iterator.next();
                try {
                    if (jsonObject.has(key)) {
                        JSONObject value = jsonObject.getJSONObject(key);
                        // value is another JSONObject where you can get the "name" from
                            String name = value.getString("name");
                        sA.add(name);
                            Log.e("value= ", name);

                    }
                } catch (JSONException e) {
                    // Something went wrong!
                    e.printStackTrace();
                }
            }
               // sA[0]=getDisc(paraaams).toString();
         ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
                    android.R.layout.simple_list_item_1, sA);
            listView.setAdapter(adapter);
        return rootView;
        }

这篇关于Json数组解析在Android中始终为空结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆