Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Json类型不匹配,Android_Java_Android_Json - Fatal编程技术网

Java Json类型不匹配,Android

Java Json类型不匹配,Android,java,android,json,Java,Android,Json,我得到了这样一个JSON。这是一根很长的绳子。我只是粘贴了一些部分,整个部分在JSON中没有错误 { "1": { "fajr": "00:0-33", "sunrise": "12:10", "zuhr": "17:45", "asr": "20:48", "maghrib": "23:19", "isha": "24:52" }, "2": { "f

我得到了这样一个JSON。这是一根很长的绳子。我只是粘贴了一些部分,整个部分在JSON中没有错误

    {
    "1": {
        "fajr": "00:0-33",
        "sunrise": "12:10",
        "zuhr": "17:45",
        "asr": "20:48",
        "maghrib": "23:19",
        "isha": "24:52"
    },
    "2": {
        "fajr": "00:0-32",
        "sunrise": "12:09",
        "zuhr": "17:45",
        "asr": "20:49",
        "maghrib": "23:21",
        "isha": "24:53"
    },
    "3": {
        "fajr": "00:0-30",
        "sunrise": "12:07",
        "zuhr": "17:45",
        "asr": "20:50",
        "maghrib": "23:22",
        "isha": "24:54"
    }
}
我像这样解析它

            HttpRequest request = HttpRequest.get(URL);
            jsonData = request.body();
            System.out.println(jsonData);

            JSONArray jsonArray = new JSONArray(jsonData);

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

                JSONObject jsonObject = jsonArray.getJSONObject(i);
                // GET PRAYER DETAILS
                PrayerTime pt = new PrayerTime();
                pt.setFajr(jsonObject.getString(FAJR));
                pt.setSunrise(jsonObject.getString(SUNRISE));
                pt.setJohr(jsonObject.getString(ZUHR));
                pt.setAsar(jsonObject.getString(ASR));
                pt.setMagrib(jsonObject.getString(MAGRIB));
                pt.setEisha(jsonObject.getString(ISHA));

                Log.e("PrayerTime", "" + pt.getSunrise());

            }`
HttpRequest请求=HttpRequest.get(URL);
jsonData=request.body();
System.out.println(jsonData);
JSONArray JSONArray=新的JSONArray(jsonData);

对于JSON字符串中的(inti=0;i),有两个符号可以引导您完成解析:

{-表示JSONObject

[-表示JSONArray

虽然您的Json是有效的,但由于没有“[]”,因此无法检测到JSONArray

要解析此json,请将代码更改为:

JSONObject jsonObject = new JSONObject(jsonData) ;
JSONObject json_one = jsonObject.getJSONObject("1");
JSONObject json_two = jsonObject.getJSONObject("2");
JSONObject json_three = jsonObject.getJSONObject("3");
然后:

            PrayerTime pt = new PrayerTime();
            pt.setFajr(json_one.getString(FAJR));
            pt.setSunrise(json_one.getString(SUNRISE));
            ...

在JSON字符串中,有两个符号引导您完成解析:

{-表示JSONObject

[-表示JSONArray

虽然您的Json是有效的,但由于没有“[]”,因此无法检测到JSONArray

要解析此json,请将代码更改为:

JSONObject jsonObject = new JSONObject(jsonData) ;
JSONObject json_one = jsonObject.getJSONObject("1");
JSONObject json_two = jsonObject.getJSONObject("2");
JSONObject json_three = jsonObject.getJSONObject("3");
然后:

            PrayerTime pt = new PrayerTime();
            pt.setFajr(json_one.getString(FAJR));
            pt.setSunrise(json_one.getString(SUNRISE));
            ...

问题是这个字符串不包含任何JSONArray,您正在尝试解析json数组

如果没有JSONArray,那么
JSONArray-JSONArray=new-JSONArray(jsonData);
这一行没有任何用处

你可以这样解决你的问题

Log.i("jsonData", jsonData);
            try{
            JSONObject jobj1=new JSONObject(jsonData);
            for(int i=0;i<31;i++){
                if(jobj1.has(""+i)){
                    JSONObject jobj2=jobj1.getJSONObject(""+i);
                    fazarData.add(jobj2.getString("fajr"));
                }
            }

            Log.i("fajr", ""+fazarData);

            }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
Log.i(“jsonData”,jsonData);
试一试{
JSONObject jobj1=新的JSONObject(jsonData);

对于(inti=0;i来说,问题是这个字符串不包含任何JSONArray,您正在尝试解析json数组

如果没有JSONArray,那么
JSONArray-JSONArray=new-JSONArray(jsonData);
这一行没有任何用处

你可以这样解决你的问题

Log.i("jsonData", jsonData);
            try{
            JSONObject jobj1=new JSONObject(jsonData);
            for(int i=0;i<31;i++){
                if(jobj1.has(""+i)){
                    JSONObject jobj2=jobj1.getJSONObject(""+i);
                    fazarData.add(jobj2.getString("fajr"));
                }
            }

            Log.i("fajr", ""+fazarData);

            }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
Log.i(“jsonData”,jsonData);
试一试{
JSONObject jobj1=新的JSONObject(jsonData);

对于(int i=0;我猜一个相似的@Nabin不象那样我猜一个相似的@Nabin不象那样Faghidi感谢您的快速回答。我至少有31个JSON对象及其相应的数据。如何获取所有这些。我认为最好的方法是以包含数组的方式格式化JSON。我的意思是“1”当前是一个jsonobject,但由于它包含一组有意义的数据,因此应将其格式化为jsonarray!Faghidi感谢您的快速回答。我至少有31个JSON对象及其相应的数据。如何获取所有JSON对象。我认为最好的方法是以包含数组的方式格式化JSON。我的意思是“1”当前是一个jsonobject,但因为它包含一组有意义的数据,所以应该格式化为jsonarray!