android - jsonarray无法转换为jsonobject logcat错误

标签 android arrays json

好吧,我得到了几个 JSONArray,我已将它们作为 JSONobject 添加到 JSONArray 并存储在文件中。

这是我的 json 语句:

{
    "wines": [
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 0 is a very sweet red wine.",
            "name": "Wine number: 0",
            "barcode": 1234567890123,
            "year": 1982,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        },
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 1 is a very sweet red wine.",
            "name": "Wine number: 1",
            "barcode": 1234568019470,
            "year": 1983,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        },
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 2 is a very sweet red wine.",
            "name": "Wine number: 2",
            "barcode": 1234568148817,
            "year": 1984,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        },
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 3 is a very sweet red wine.",
            "name": "Wine number: 3",
            "barcode": 1234568278164,
            "year": 1985,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        },
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 4 is a very sweet red wine.",
            "name": "Wine number: 4",
            "barcode": 1234568407511,
            "year": 1986,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        },
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 5 is a very sweet red wine.",
            "name": "Wine number: 5",
            "barcode": 1234568536858,
            "year": 1987,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        },
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 6 is a very sweet red wine.",
            "name": "Wine number: 6",
            "barcode": 1234568666205,
            "year": 1988,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        },
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 7 is a very sweet red wine.",
            "name": "Wine number: 7",
            "barcode": 1234568795552,
            "year": 1989,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        },
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 8 is a very sweet red wine.",
            "name": "Wine number: 8",
            "barcode": 1234568924899,
            "year": 1990,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        },
        {
            "biologic": 0,
            "sparkling": 1,
            "color": "Red",
            "description": "This wine number 9 is a very sweet red wine.",
            "name": "Wine number: 9",
            "barcode": 1234569054246,
            "year": 1991,
            "barcodeType": "EAN13",
            "taste": "Sweet",
            "country": "Netherlands"
        }
    ],
    "reviewWine": [
        {
            "reviewIDWine": 0,
            "wineID": 1234567890123,
            "reviewWine": "This wine is not that sweet at all.ksbdksbcksdbcksdcbsdcbsdc,bskdcbksdckscbs ,scscb",
            "dateReviewWine": 1380876068189,
        "titleReviewWine": "Not sweet"
        },
        {
            "reviewIDWine": 1,
            "wineID": 56121,
            "reviewWine": "This wine is not that sweet at all.",
            "dateReviewWine": 1340826068189,
        "titleReviewWine": "Not sweet"
        },
        {
            "reviewIDWine": 2,
            "wineID": 56162,
            "reviewWine": "This wine is not that sweet at all.",
            "dateReviewWine": 1386876068189,
        "titleReviewWine": "Not sweet"
        }
    ],
"reviewStore": [
        {
            "reviewIDStore": 0,
            "reviewStoreID": 1234567890123,
            "reviewStore": "This wine is not that sweet at all.ksbdksbcksdbcksdcbsdcbsdc,bskdcbksdckscbs ,scscb",
            "dateReviewStore": 1380876068189,
        "TitleReviewStore": "Not sweet"
        },
        {
            "reviewIDStore": 1,
            "reviewStoreID": 56121,
            "reviewStore": "This wine is not that sweet at all.",
            "dateReviewStore": 1340826068189,
        "TitleReviewStore": "Not sweet"
        },
        {
            "reviewIDStore": 2,
            "reviewStoreID":  56162,
            "reviewStore": "This wine is not that sweet at all.",
            "dateReviewStore": 1386876068189,
        "TitleReviewStore": "Not sweet"
        }
    ],
    "ratingWine": [
        {
            "ratingIDWine": 0,
            "wineID": 1234567890123,
            "ratingWine": 9,
            "dateAddedRatingWine": 1380876008180,
        "userIDAddedRatingWine": 4
         },
        {
            "ratingID": 1,
            "wineID": 56162,
            "ratingWine": 9,
            "dateAddedRatingWine": 1300876068189,
        "userIDAddedRatingWine": 4
        },
        {
            "ratingID": 2,
            "wineID": 1234567890123,
            "ratingWine": 9,
            "dateAddedRatingWine": 1380800068189,
        "userIDAddedRatingWine": 4
        }
    ],
    "user": [
        {
            "userID": 0,
            "userName": "test0",
            "password": "test0",
            "email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="15766c777067557278747c793b767a78" rel="noreferrer noopener nofollow">[email protected]</a>"
        },
        {
            "userID": 1,
            "userName": "test1",
            "password": "test1",
            "email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2d4e414c5a6d4a404c4441034e4240" rel="noreferrer noopener nofollow">[email protected]</a>"
        },
        {
            "userID": 2,
            "userName": "test2",
            "password": "test2",
            "email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e3809a818691d188a3848e828a8fcd808c8e" rel="noreferrer noopener nofollow">[email protected]</a>"
        },
        {
            "userID": 3,
            "userName": "test3",
            "password": "test3",
            "email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="593a203b3c2b6b696969193e34383035773a3634" rel="noreferrer noopener nofollow">[email protected]</a>"
        }
    ],
    "store": [
        {
            "storeID": 0,
            "storeName": "Edah helmond",
            "city": "helmond",
            "streetName": "fretlaan",
            "houseNumber": "90",
        "country":"Netherlands"
        },
        {
            "storeID": 1,
            "storeName": "ah helmond",
            "city": "helmond",
            "streetName": "de byrdstraat",
            "houseNumber": "9c",
        "country":"Netherlands"
        },
        {
            "storeID": 2,
            "storeName": "Edah eindhoven",
            "city": "eindhoven",
            "streetName": "de haag",
            "houseNumber": "90a",
        "country":"Netherlands"
        },
        {
            "storeID": 3,
            "storeName": "Edah eden",
            "city": "eden",
            "streetName": "de laan",
            "houseNumber": "10",
        "country":"Netherlands"
        },
        {
            "storeID": 4,
            "storeName": "ah neunen",
            "city": "neunen",
            "streetName": "de haaglaan",
            "houseNumber": "9",
        "country":"Netherlands"
        }
    ],
    "wineStoreRelation": [
        {
            "wineID": 0,
            "storeID": 2,
            "price": "4.59"
        },
        {
            "wineID": 2,
            "storeID": 1,
            "price": "13.98"
        },
        {
            "wineID": 2,
            "storeID": 2,
            "price": "3.55"
        },
        {
            "wineID": 1,
            "storeID": 1,
            "price": "3.50"
        },
        {
            "wineID": 0,
            "storeID": 1,
            "price": "6.50"
        },
        {
            "wineID": 1,
            "storeID": 0,
            "price": "3.50"
        }
    ]
}

这是我添加数组来创建文件的代码:

public void createJSONExampleDataFile(JSONArray jArray) {


        File f = new File(fileJSON);
        f.delete();
        if (!f.exists()) {
            try {
                FileWriter fos = new FileWriter(f);
                fos.write(jArray.toString());
                fos.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            try {
                f.delete();
                FileWriter fos = new FileWriter(f);
                fos.write(jArray.toString());
                fos.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
public JSONArray createJSONExampleData() {
        JSONArray ar = new JSONArray();

        ar.put(createJSONWineExampleData());
        ar.put(createJSONReviewExampleData());
        return ar;
    }

    public JSONObject createJSONWineExampleData() {
        winesJSONArray = new JSONArray();
        JSONObject o= new JSONObject(); 

        for (int i = 0; i < 10; i++) {
            jObj = new JSONObject();
            try {
                jObj.put(JSON_WINE_BARCODE, Long.valueOf((1234567890123L + (i * 129347))));
                jObj.put(JSON_WINE_BARCODETYPE, "EAN13");
                jObj.put(JSON_WINE_NAME, "Wine number: " + i);
                jObj.put(JSON_WINE_YEAR, (1982 + i));
                jObj.put(JSON_WINE_COUNTRY, "Netherlands");
                jObj.put(JSON_WINE_TASTE, "Sweet");
                jObj.put(JSON_WINE_COLOR, "Red");
                jObj.put(JSON_WINE_DESCRIPTION, "This wine number " + i + " is a very sweet red wine.");
                jObj.put(JSON_WINE_SPARKLING, 1);
                jObj.put(JSON_WINE_BIOLOGIC, 0);

                System.out.println(jObj.toString());
            } catch (JSONException e) {
                e.printStackTrace();
            }
            winesJSONArray.put(jObj);
        }
        try {
            o.put(JSON_ARRAY_WINE, winesJSONArray);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return o;
    }

    public JSONObject createJSONReviewExampleData() {
        reviewWineJSONArray = new JSONArray();
        JSONObject o= new JSONObject(); 

        for (int i = 0; i < 5; i++) {
            jObj = new JSONObject();
            try {
                jObj.put(JSON_REVIEWWINE_REVIEWID, 1+i);
                jObj.put(JSON_REVIEWWINE_WINEID, Long.valueOf((1234567890123L + (i * 129347))));
                jObj.put(JSON_REVIEWWINE_REVIEW, i);
                jObj.put(JSON_REVIEWWINE_DATE, 1340826068189L-(i*12999823));
                jObj.put(JSON_REVIEWWINE_TITLE, "SWeet red: "+i);

                System.out.println(jObj.toString());
            } catch (JSONException e) {
                e.printStackTrace();
            }
            reviewWineJSONArray.put(jObj);
        }
        try {
            o.put(JSON_ARRAY_REVIEWWINE, reviewWineJSONArray);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return o;
    }

这是我尝试使用它来从中获取 1 个数组的代码:

public JSONObject getJSONObjectWineFromJSONObjectArray(JSONObject jsonOb, String barcode) {
        JSONArray jsonAr = new JSONArray();

        try {
            jsonAr = jsonOb.getJSONArray(JSON_ARRAY_WINE);
        } catch (JSONException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        for (int i = 0; i < jsonAr.length(); i++) {
            try {
                jsonAr.getJSONObject(i);
                if (jsonAr.getJSONObject(i).getString(JSON_WINE_BARCODE).equals(barcode)) {
                    return jsonAr.getJSONObject(i);
                }

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;
    }

public JSONArray getJSONArrayWinesFromFile() {

        try {
            is = new FileInputStream(new File(fileJSON));
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
            System.out.println("Dit is de string: "+json.toString());

        } catch (FileNotFoundException e) {
            Log.e("File Error", "Error getting file result " + e.toString());
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }
        try {
            JSONObject jOb = new JSONObject(json);

            winesJSONArray = jOb.getJSONArray(JSON_ARRAY_WINE);

            System.out.println("Lets see: "+winesJSONArray.toString(1));


        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return winesJSONArray;
    }

这是我从中得到的 logcat:

10-10 11:50:25.298: W/System.err(3548): org.json.JSONException: Value [{"wines":[{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 0 is a very sweet red wine.","name":"Wine number: 0","barcode":1234567890123,"year":1982,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 1 is a very sweet red wine.","name":"Wine number: 1","barcode":1234568019470,"year":1983,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 2 is a very sweet red wine.","name":"Wine number: 2","barcode":1234568148817,"year":1984,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 3 is a very sweet red wine.","name":"Wine number: 3","barcode":1234568278164,"year":1985,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 4 is a very sweet red wine.","name":"Wine number: 4","barcode":1234568407511,"year":1986,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 5 is a very sweet red wine.","name":"Wine number: 5","barcode":1234568536858,"year":1987,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 6 is a very sweet red wine.","name":"Wine number: 6","barcode":1234568666205,"year":1988,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 7 is a very sweet red wine.","name":"Wine number: 7","barcode":1234568795552,"year":1989,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 8 is a very sweet red wine.","name":"Wine number: 8","barcode":1234568924899,"year":1990,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 9 is a very sweet red wine.","name":"Wine number: 9","barcode":1234569054246,"year":1991,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"}]},{"reviewWine":[{"reviewIDWine":1,"dateReviewWine":1340826068189,"wineId":1234567890123,"titleReviewWine":"SWeet red: 0","reviewWine":0},{"reviewIDWine":2,"dateReviewWine":1340813068366,"wineId":1234568019470,"titleReviewWine":"SWeet red: 1","reviewWine":1},{"reviewIDWine":3,"dateReviewWine":1340800068543,"wineId":1234568148817,"titleReviewWine":"SWeet red: 2","reviewWine":2},{"reviewIDWine":4,"dateReviewWine":1340787068720,"wineId":1234568278164,"titleReviewWine":"SWeet red: 3","reviewWine":3},{"reviewIDWine":5,"dateReviewWine":1340774068897,"wineId":1234568407511,"titleReviewWine":"SWeet red: 4","reviewWine":4}]}] of type org.json.JSONArray cannot be converted to JSONObject
10-10 11:50:25.308: W/System.err(3548):     at org.json.JSON.typeMismatch(JSON.java:107)
10-10 11:50:25.308: W/System.err(3548):     at org.json.JSONObject.<init>(JSONObject.java:158)
10-10 11:50:25.308: W/System.err(3548):     at org.json.JSONObject.<init>(JSONObject.java:171)
10-10 11:50:25.308: W/System.err(3548):     at com.moyoweb.winescanner.JSONParser.getJSONArrayWinesFromFile(JSONParser.java:176)
10-10 11:50:25.308: W/System.err(3548):     at com.moyoweb.winescanner.ListWineView.onCreate(ListWineView.java:58)
10-10 11:50:25.308: W/System.err(3548):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
10-10 11:50:25.308: W/System.err(3548):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836)
10-10 11:50:25.308: W/System.err(3548):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
10-10 11:50:25.308: W/System.err(3548):     at android.app.ActivityThread.access$1500(ActivityThread.java:135)
10-10 11:50:25.308: W/System.err(3548):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
10-10 11:50:25.308: W/System.err(3548):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 11:50:25.308: W/System.err(3548):     at android.os.Looper.loop(Looper.java:150)
10-10 11:50:25.308: W/System.err(3548):     at android.app.ActivityThread.main(ActivityThread.java:4385)
10-10 11:50:25.308: W/System.err(3548):     at java.lang.reflect.Method.invokeNative(Native Method)
10-10 11:50:25.308: W/System.err(3548):     at java.lang.reflect.Method.invoke(Method.java:507)
10-10 11:50:25.308: W/System.err(3548):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
10-10 11:50:25.308: W/System.err(3548):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
10-10 11:50:25.308: W/System.err(3548):     at dalvik.system.NativeStart.main(Native Method)
10-10 11:50:25.318: D/AndroidRuntime(3548): Shutting down VM
10-10 11:50:25.318: W/dalvikvm(3548): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
10-10 11:50:25.318: E/AndroidRuntime(3548): FATAL EXCEPTION: main
10-10 11:50:25.318: E/AndroidRuntime(3548): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.moyoweb.winescanner/com.moyoweb.winescanner.ListWineView}: java.lang.NullPointerException
10-10 11:50:25.318: E/AndroidRuntime(3548):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1872)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at android.app.ActivityThread.access$1500(ActivityThread.java:135)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at android.os.Looper.loop(Looper.java:150)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at android.app.ActivityThread.main(ActivityThread.java:4385)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at java.lang.reflect.Method.invokeNative(Native Method)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at java.lang.reflect.Method.invoke(Method.java:507)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at dalvik.system.NativeStart.main(Native Method)
10-10 11:50:25.318: E/AndroidRuntime(3548): Caused by: java.lang.NullPointerException
10-10 11:50:25.318: E/AndroidRuntime(3548):     at com.moyoweb.winescanner.Wine.fromJSON(Wine.java:70)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at com.moyoweb.winescanner.ListWineView.onCreate(ListWineView.java:58)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
10-10 11:50:25.318: E/AndroidRuntime(3548):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836)
10-10 11:50:25.318: E/AndroidRuntime(3548):     ... 11 more

10-10 11:50:25.258: I/System.out(3548): Dit is de string: [{"wines":[{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 0 is a very sweet red wine.","name":"Wine number: 0","barcode":1234567890123,"year":1982,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 1 is a very sweet red wine.","name":"Wine number: 1","barcode":1234568019470,"year":1983,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 2 is a very sweet red wine.","name":"Wine number: 2","barcode":1234568148817,"year":1984,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 3 is a very sweet red wine.","name":"Wine number: 3","barcode":1234568278164,"year":1985,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 4 is a very sweet red wine.","name":"Wine number: 4","barcode":1234568407511,"year":1986,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 5 is a very sweet red wine.","name":"Wine number: 5","barcode":1234568536858,"year":1987,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 6 is a very sweet red wine.","name":"Wine number: 6","barcode":1234568666205,"year":1988,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 7 is a very sweet red wine.","name":"Wine number: 7","barcode":1234568795552,"year":1989,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 8 is a very sweet red wine.","name":"Wine number: 8","barcode":1234568924899,"year":1990,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"},{"biologic":0,"sparkling":1,"color":"Red","description":"This wine number 9 is a very sweet red wine.","name":"Wine number: 9","barcode":1234569054246,"year":1991,"barcodeType":"EAN13","taste":"Sweet","country":"Netherlands"}]},{"reviewWine":[{"dateReviewWine":1340826068189,"reviewIDWine":1,"titleReviewWine":"SWeet red: 0","wineId":1234567890123,"reviewWine":0},{"dateReviewWine":1340813068366,"reviewIDWine":2,"titleReviewWine":"SWeet red: 1","wineId":1234568019470,"reviewWine":1},{"dateReviewWine":1340800068543,"reviewIDWine":3,"titleReviewWine":"SWeet red: 2","wineId":1234568148817,"reviewWine":2},{"dateReviewWine":1340787068720,"reviewIDWine":4,"titleReviewWine":"SWeet red: 3","wineId":1234568278164,"reviewWine":3},{"dateReviewWine":1340774068897,"reviewIDWine":5,"titleReviewWine":"SWeet red: 4","wineId":1234568407511,"reviewWine":4}]}]

这是我从文件中获取的字符串,所以我必须将它作为一个对象而不是一个数组存放?

So you need to have

JSONArray jr = new JSONArray("jsonstring"); So replace

JSONObject jOb = new JSONObject(json); By

JSONArray jr = new JSONArray(json);

我尝试过这个:

try {
            winesJSONArray = new JSONArray(json);

            System.out.println(winesJSONArray.toString());


            System.out.println("Lets see: "+winesJSONArray.toString(1));

并得到这个 logcat:

http://pastebin.com/WwZax22H 添加为限制的 Pastebin cus。

最佳答案

根据您的 logcat,您的 json 如下所示

 [  // json array node
    {  // json object node
        "wines": [  // json array wines
            {   // json object node
                "biologic": 0, // json string
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 0 is a very sweet red wine.",
                "name": "Wine number: 0",
                "barcode": 1234567890123,
                "year": 1982,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            },
            {
                "biologic": 0,
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 1 is a very sweet red wine.",
                "name": "Wine number: 1",
                "barcode": 1234568019470,
                "year": 1983,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            },
            {
                "biologic": 0,
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 2 is a very sweet red wine.",
                "name": "Wine number: 2",
                "barcode": 1234568148817,
                "year": 1984,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            },
            {
                "biologic": 0,
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 3 is a very sweet red wine.",
                "name": "Wine number: 3",
                "barcode": 1234568278164,
                "year": 1985,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            },
            {
                "biologic": 0,
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 4 is a very sweet red wine.",
                "name": "Wine number: 4",
                "barcode": 1234568407511,
                "year": 1986,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            },
            {
                "biologic": 0,
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 5 is a very sweet red wine.",
                "name": "Wine number: 5",
                "barcode": 1234568536858,
                "year": 1987,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            },
            {
                "biologic": 0,
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 6 is a very sweet red wine.",
                "name": "Wine number: 6",
                "barcode": 1234568666205,
                "year": 1988,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            },
            {
                "biologic": 0,
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 7 is a very sweet red wine.",
                "name": "Wine number: 7",
                "barcode": 1234568795552,
                "year": 1989,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            },
            {
                "biologic": 0,
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 8 is a very sweet red wine.",
                "name": "Wine number: 8",
                "barcode": 1234568924899,
                "year": 1990,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            },
            {
                "biologic": 0,
                "sparkling": 1,
                "color": "Red",
                "description": "This wine number 9 is a very sweet red wine.",
                "name": "Wine number: 9",
                "barcode": 1234569054246,
                "year": 1991,
                "barcodeType": "EAN13",
                "taste": "Sweet",
                "country": "Netherlands"
            }
        ]
    },
    {
        "reviewWine": [
            {
                "reviewIDWine": 1,
                "dateReviewWine": 1340826068189,
                "wineId": 1234567890123,
                "titleReviewWine": "SWeet red: 0",
                "reviewWine": 0
            },
            {
                "reviewIDWine": 2,
                "dateReviewWine": 1340813068366,
                "wineId": 1234568019470,
                "titleReviewWine": "SWeet red: 1",
                "reviewWine": 1
            },
            {
                "reviewIDWine": 3,
                "dateReviewWine": 1340800068543,
                "wineId": 1234568148817,
                "titleReviewWine": "SWeet red: 2",
                "reviewWine": 2
            },
            {
                "reviewIDWine": 4,
                "dateReviewWine": 1340787068720,
                "wineId": 1234568278164,
                "titleReviewWine": "SWeet red: 3",
                "reviewWine": 3
            },
            {
                "reviewIDWine": 5,
                "dateReviewWine": 1340774068897,
                "wineId": 1234568407511,
                "titleReviewWine": "SWeet red: 4",
                "reviewWine": 4
            }
        ]
    }
]

[代表json数组节点

{表示json对象节点

所以你需要有

 JSONArray jr = new JSONArray("jsonstring");

所以替换

 JSONObject jOb = new JSONObject(json);

JSONArray jr = new JSONArray(json);

关于android - jsonarray无法转换为jsonobject logcat错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292558/

相关文章:

android - 如何为非 Activity 类授予振动权限?

Android,运行时查看SQLite数据库(不像其他题)

java - 如何从 JSONObject 接收数据到简单数组

jquery - 使用 getJson 方法检查 null 响应

android - 如何使用Android Studio打包 “wrap.sh” Shell脚本

android - 适配器类转换异常从 ListView 中删除页脚 View

algorithm - 总和大于给定值的最小子数组的大小

具有多个条件和值的 Javascript 过滤器对象数组

json - 如何在Clojure中将JSON漂亮地打印到文件中?

javascript - 避免 LinkedIn 收件人在连接消息中看到彼此的姓名和电子邮件地址