Ошибка синтаксического анализа JSON. Залп не может преобразовать строку в массив JSON - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть файл PHP, который составляет JSONArray из некоторых данных в моей базе данных. У меня было это на моем локальном хосте (с использованием простого PHP), и это работало хорошо. После того, как я перенес его на реальный хост, я получаю сообщение об ошибке:

Org.json.jsonexception: Value ... скрипт типа java.lang.String невозможно преобразовать в JSONObject

Мой JSON выглядит так:

{
    "chemData": [{
        "ID": "1",
        "TYPE": "AD_SOLVENTBASE",
        "COMPANY": "MORCHEM",
        "SOLIDC": "65.000",
        "GRAMNEED": "3.200",
        "SOLUSE": "0.450",
        "PRICE": "15000"
    }, {
        "ID": "2",
        "TYPE": "AD_SOLVENTLESS",
        "COMPANY": "MORCHEM",
        "SOLIDC": "100.000",
        "GRAMNEED": "2.300",
        "SOLUSE": "0.000",
        "PRICE": "15000"
    }, {
        "ID": "3",
        "TYPE": "HEATSEAL_PS",
        "COMPANY": "BUJAN",
        "SOLIDC": "25.000",
        "GRAMNEED": "5.000",
        "SOLUSE": "0.250",
        "PRICE": "26000"
    }, {
        "ID": "4",
        "TYPE": "COLDSEAL",
        "COMPANY": "AZARAN_BASPAR",
        "SOLIDC": "50.000",
        "GRAMNEED": "3.000",
        "SOLUSE": "0.000",
        "PRICE": "14000"
    }, {
        "ID": "5",
        "TYPE": "INK",
        "COMPANY": "BEHROFARAN",
        "SOLIDC": "37.000",
        "GRAMNEED": "2.000",
        "SOLUSE": "0.450",
        "PRICE": "12500"
    }, {
        "ID": "6",
        "TYPE": "EASYPEEL",
        "COMPANY": "BUJAN",
        "SOLIDC": "25.000",
        "GRAMNEED": "5.000",
        "SOLUSE": "0.250",
        "PRICE": "50000"
    }],
    "filmData": [{
        "id": "1",
        "Film Type": "PE",
        "Density": "0.9200",
        "Price": "6000"
    }, {
        "id": "2",
        "Film Type": "CPP",
        "Density": "0.9200",
        "Price": "9500"
    }, {
        "id": "3",
        "Film Type": "PET",
        "Density": "1.4100",
        "Price": "12000"
    }, {
        "id": "4",
        "Film Type": "BOPP",
        "Density": "0.9300",
        "Price": "9500"
    }, {
        "id": "5",
        "Film Type": "Al",
        "Density": "2.7400",
        "Price": "12000"
    }, {
        "id": "6",
        "Film Type": "BOPP MET",
        "Density": "0.9300",
        "Price": "10000"
    }],
    "cost": [{
        "ID": "1",
        "WORKERPART": "720",
        "ENERGYPART": "80",
        "BANKNUZUL": "1700",
        "TRANSFERIN": "100",
        "TRANSFERTO": "0",
        "PACKING": "60",
        "WASTE": "4",
        "COMMISION": "80",
        "SOLVENTPRICE": "4300"
    }]
}

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Это часть синтаксического анализа в начале:

public void onResponse(JSONObject response) {

    JSONArray [] jsonArrays = new JSONArray[response.length()];
    try {
        jsonArrays [0] = response.getJSONArray("chemData");
        jsonArrays [1] = response.getJSONArray("filmData");
        jsonArrays [2] = response.getJSONArray("cost");

    }catch (JSONException e) {
        Toast.makeText(SecondActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}
0 голосов
/ 29 апреля 2018

Здесь, попробуйте этот код:

        try {
        JSONObject rootObj = new JSONObject(yourJson);

        JSONArray chemData = rootObj.getJSONArray("chemData");
        JSONArray filmData = rootObj.getJSONArray("filmData");
        JSONArray cost = rootObj.getJSONArray("cost");

        for (int i = 0; i < chemData.length(); i++) {
            JSONObject obj = chemData.getJSONObject(i);

            String id = obj.getString("ID");
            obj.getString("TYPE");
            String company = obj.getString("COMPANY");
            obj.getString("SOLIDC");
            obj.getString("GRAMNEED");
            obj.getString("SOLUSE");
            obj.getString("PRICE");

            Log.d("testing", id + "  " + company);
        }


        for (int i = 0; i < filmData.length(); i++) {
            JSONObject obj = filmData.getJSONObject(i);

            String id = obj.getString("id");
            obj.getString("Film Type");
            obj.getString("Density");
            String price = obj.getString("Price");

            Log.d("testing", id + "  " + price);
        }

        for (int i = 0; i < cost.length(); i++) {
            JSONObject obj = cost.getJSONObject(i);

            String id = obj.getString("ID");
            obj.getString("WORKERPART");
            obj.getString("ENERGYPART");
            obj.getString("BANKNUZUL");
            obj.getString("TRANSFERIN");
            obj.getString("TRANSFERTO");
            obj.getString("PACKING");
            String waste = obj.getString("WASTE");
            obj.getString("COMMISION");
            obj.getString("SOLVENTPRICE");

            Log.d("testing", id + "  " + waste);
        }

    } catch (JSONException ex) {
        ex.printStackTrace();
    }

Вам, вероятно, следует создать три класса pojo для хранения ваших данных в ArrayList типа yourPojo .

Надеюсь, это поможет.

...