为了账号安全,请及时绑定邮箱和手机立即绑定

Java JSONObject getJsonArray 空字符串

Java JSONObject getJsonArray 空字符串

芜湖不芜 2021-11-17 12:32:48
我有一些 JSON 返回如下:[{"on_arrival_inst":"Ok","order_inst":"Ok","finished_inst":"Ok"},{"on_arrival_inst":"Arrive","order_inst":"Order","finished_inst":"Finished"}]我试图将它们分成两个数组并按如下方式获取字符串:jsonResultsObject = new JSONObject(result);            jsonArray = jsonResultsObject.getJSONArray("");            int count = 0;            String onArrive, onReady, onFinished;            while (count<jsonArray.length()){                JSONObject JO = jsonArray.getJSONObject(count);                onArrive = JO.getString("on_arrival_inst");                onReady = JO.getString("order_inst");                onFinished = JO.getString("finished_inst");                System.out.println(onArrive);                System.out.println(onReady);                System.out.println(onFinished);                count++;            }但是代码永远不会进入循环,因为数组没有从 JSONObject 填充?
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

代码没有进入循环的事实只是因为您JSONArray没有命名的键,""但它包含了JSONObjects。JSON 中的对象和数组具有不同的注释。请参阅:JSON 参考网站


所以你的代码应该是:


jsonResultsObject = new JSONObject(result);


            String onArrive, onReady, onFinished;


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

                JSONObject JO = jsonArray.getJSONObject(i);

                onArrive = JO.getString("on_arrival_inst");

                onReady = JO.getString("order_inst");

                onFinished = JO.getString("finished_inst");


                System.out.println(onArrive);

                System.out.println(onReady);

                System.out.println(onFinished);


            }

并且还要确保您的代码在try - catch要捕获的块内JSONException


查看完整回答
反对 回复 2021-11-17
?
心有法竹

TA贡献1866条经验 获得超5个赞

你的结果是 JSONArray 而不是 JSONObject。这就是为什么您必须将其转换为数组而不是对象的原因。



jsonResultsArray = new JSONArray(result);

代替


jsonResultsObject = new JSONObject(result);

完整的代码将是


        jsonResultsArray = new JSONArray(result);

        int count = 0;

        String onArrive, onReady, onFinished;


        while (count<jsonResultsArray.length()){

            JSONObject JO = jsonResultsArray.getJSONObject(count);

            onArrive = JO.getString("on_arrival_inst");

            onReady = JO.getString("order_inst");

            onFinished = JO.getString("finished_inst");


            System.out.println(onArrive);

            System.out.println(onReady);

            System.out.println(onFinished);


            count++;


        }


查看完整回答
反对 回复 2021-11-17
  • 2 回答
  • 0 关注
  • 298 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信