Php JSON解析错误。Volley无法将字符串转换为JSON数组
我有一个PHP文件,它根据数据库中的一些数据生成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
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