Php JSON解析错误。Volley无法将字符串转换为JSON数组

Php JSON解析错误。Volley无法将字符串转换为JSON数组,php,android,html,android-volley,Php,Android,Html,Android Volley,我有一个PHP文件,它根据数据库中的一些数据生成JSONArray。我在本地主机上使用了这个(使用easy php),它运行得很好。 在将其传输到真实主机后,我收到一个错误: Org.json.jsonexception:值。。。java.lang.String类型的脚本 无法转换为JSONObject 我的json看起来像: { "chemData": [{ "ID": "1", "TYPE": "AD_SOLVENTBASE", "CO

我有一个PHP文件,它根据数据库中的一些数据生成
JSONArray
。我在本地主机上使用了这个(使用easy php),它运行得很好。 在将其传输到真实主机后,我收到一个错误:

Org.json.jsonexception:值。。。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"
    }]
}
在这里,请尝试以下代码:

        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();
    }
试试看{
JSONObject rootObj=新的JSONObject(yourJson);
JSONArray chemData=rootObj.getJSONArray(“chemData”);
JSONArray filmData=rootObj.getJSONArray(“filmData”);
JSONArray成本=rootObj.getJSONArray(“成本”);
对于(int i=0;i
您可能应该创建三个pojo类来将数据存储在yourPojo类型的ArrayList中


希望这有帮助。

这是start中的解析部分:

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();
    }
}

请把你的问题包括在代码中,如果它不是问题的解决方案,千万不要把它作为答案发布。我有一个类似的代码。但是它太长了。@user97解析一个对象是完全必要的。但看看Gson或Jackson库可以帮助减少这种情况。此外,还可以使用改型而不是截击来解析JSON