У меня небольшая проблема с парсингом json. Я не могу показать информацию из базы данных, используя json. Ошибка выглядит так:
W/System.err: org.json.JSONException: No value for Cars
at org.json.JSONObject.get(JSONObject.java:355)
at org.json.JSONObject.getJSONArray(JSONObject.java:549)
at com.hfad.zpi.Opis_urzadzenia$2.onResponse(Opis_urzadzenia.java:87)
at com.hfad.zpi.Opis_urzadzenia$2.onResponse(Opis_urzadzenia.java:80)
at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:90)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Json код выглядит так (json создан кодом php, который был протестирован в приложении в python и работает):
{"0{"CarDescription":"Dostawczy","CarMake":"Renault","LiPlateNr":"999","IdCars":"1","CarDescription":"Dostawczy","CarColor":"Zielony","CarEngine":"3","CarModel":Clio"}}
И java Код выглядит так:
public class Opis_urzadzenia extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_opis_urzadzenia);
Button buttonParse = findViewById(R.id.parseButton);
TextView textView = findViewById(R.id.text_view_results);
buttonParse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
jsonParse();
}
});
}
private void jsonParse(){
String url = "http://zpigroup7.cba.pl/project/SQL_Query.php";
final Map<String,String> params = new HashMap();
params.put("Query", "SELECT");
params.put("GET", "*");
params.put("FROM", "Cars");
final JSONObject json= new JSONObject(params);
JSONArray jsonArray = new JSONArray();
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, json, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
//Tu jest błąd , nie może odszukać wartości jaką jest Cars
JSONArray jsonArray = response.getJSONArray("Cars");
for (int i = 0; i < jsonArray.length(); i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String carmake = jsonObject.getString("CarMake");
String cardescription = jsonObject.getString("CarDescription");
int liplatenr = jsonObject.getInt("LiPlateNr");
String carcolor = jsonObject.getString("CarColor");
int carengine = jsonObject.getInt("CarEngine");
String carmodel = jsonObject.getString("CarModel");
textView.append(carmake +" " + cardescription +" " + liplatenr +" " + carcolor +" " + carengine +" " + carmodel +" " );
textView.append("\n\n");
}
} catch (JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.toString(), Toast.LENGTH_SHORT).show();
}
});
jsonArray.put(json);
Volley.newRequestQueue(this).add(request);
}
public void ClickWroc(View view) {
this.finish();
}
}
Я не знаю, как я могу определить имя таблицы Cars, когда я не получаю его в json. Я новичок в программировании, поэтому, пожалуйста, прости.