- Forum-Beiträge: 39
02.09.2019, 14:54:53 via Website
02.09.2019 14:54:53 via Website
Hey,
Ich versuche in folgender Methode eine Tabelle aus einem Json Objekt zu erstellen. Jedoch wirft mir das ganze einen "Not a primitive array" Fehler auf. Könntet ihr mir helfen meinen Fehler zu finden?
Hier mein Code:
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void tableInit() throws JSONException {
Log.e("TableInit()", "Start!");
Log.e("TableInit()", ""+jsonObjectToTable);
JSONArray jsonArray = new JSONArray(jsonObjectToTable);
float textSize = 18.0f;
TableLayout stk = (TableLayout) findViewById(R.id.table_main);
TableRow tbrow0 = new TableRow(this);
TextView tv0 = new TextView(this);
tv0.setText(" ID ");
tv0.setTypeface(null, Typeface.BOLD); //fett
tv0.setTextSize(textSize);
tbrow0.addView(tv0);
TextView tv1 = new TextView(this);
tv1.setText(" NAME ");
tv1.setTypeface(null, Typeface.BOLD); //fett
tv1.setTextSize(textSize);
tbrow0.addView(tv1);
TextView tv2 = new TextView(this);
tv2.setText(" HOME ");
tv2.setTypeface(null, Typeface.BOLD); //fett
tv2.setTextSize(textSize);
tbrow0.addView(tv2);
TextView tv3 = new TextView(this);
tv3.setText(" WETSUIT ");
tv3.setTypeface(null, Typeface.BOLD); //fett
tv3.setTextSize(textSize);
tbrow0.addView(tv3);
TextView tv4 = new TextView(this);
tv4.setText(" BOARD ");
tv4.setTypeface(null, Typeface.BOLD); //fett
tv4.setTextSize(textSize);
tbrow0.addView(tv4);
TextView tv5 = new TextView(this);
tv5.setText(" RIG ");
tv5.setTypeface(null, Typeface.BOLD); //fett
tv5.setTextSize(textSize);
tbrow0.addView(tv5);
TextView tv6 = new TextView(this);
tv6.setText(" HARNESS ");
tv6.setTypeface(null, Typeface.BOLD); //fett
tv6.setTextSize(textSize);
tbrow0.addView(tv6);
TextView tv7 = new TextView(this);
tv7.setText(" RENTING_DATE ");
tv7.setTypeface(null, Typeface.BOLD); //fett
tv7.setTextSize(textSize);
tbrow0.addView(tv7);
TextView tv8 = new TextView(this);
tv8.setText(" RENT_UNTIL ");
tv8.setTypeface(null, Typeface.BOLD); //fett
tv8.setTextSize(textSize);
tbrow0.addView(tv8);
stk.addView(tbrow0);
for(int i = 0; i < jsonArray.length(); ++i)
{
// Extract values from JSON row:
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.e("JsonObject", ""+jsonObject);
String id = jsonObject.has("id") ? jsonObject.getString("id") : "";
String name = jsonObject.has("name") ? jsonObject.getString("name") : "";
String home = jsonObject.has("home") ? jsonObject.getString("home") : "";
String wetsuit = jsonObject.has("wetsuit") ? jsonObject.getString("wetsuit") : "";
String board = jsonObject.has("board") ? jsonObject.getString("board") : "";
String rig = jsonObject.has("rig") ? jsonObject.getString("rig") : "";
String harness = jsonObject.has("harness") ? jsonObject.getString("harness") : "";
String rent_until = jsonObject.has("rent_until") ? jsonObject.getString("rent_until") : "";
String renting_date = jsonObject.has("renting_date") ? jsonObject.getString("renting_date") : "";
TableRow tbrow = new TableRow(this);
TextView textViewId = new TextView(this);
textViewId.setText(id);
textViewId.setGravity(Gravity.CENTER);
tbrow.addView(textViewId);
TextView textViewName = new TextView(this);
textViewName.setText(name);
textViewName.setGravity(Gravity.CENTER);
tbrow.addView(textViewName);
TextView textViewHome= new TextView(this);
textViewHome.setText(home);
textViewHome.setGravity(Gravity.CENTER);
tbrow.addView(textViewHome);
TextView textViewWetsuit= new TextView(this);
textViewWetsuit.setText(wetsuit);
textViewWetsuit.setGravity(Gravity.CENTER);
tbrow.addView(textViewWetsuit);
TextView textViewBoard = new TextView(this);
textViewBoard.setText(board);
textViewBoard.setGravity(Gravity.CENTER);
tbrow.addView(textViewBoard);
TextView textViewRig = new TextView(this);
textViewRig.setText(rig);
textViewRig.setGravity(Gravity.CENTER);
tbrow.addView(textViewRig);
TextView textViewHarness = new TextView(this);
textViewHarness.setText(harness);
textViewHarness.setGravity(Gravity.CENTER);
tbrow.addView(textViewHarness);
TextView textViewRentUntil = new TextView(this);
textViewRentUntil.setText(rent_until);
textViewRentUntil.setGravity(Gravity.CENTER);
tbrow.addView(textViewRentUntil);
TextView textViewRentingDate = new TextView(this);
textViewRentingDate.setText(renting_date);
textViewRentingDate.setGravity(Gravity.CENTER);
tbrow.addView(textViewRentingDate);
TextView t4v = new TextView(this);
t4v.setText(board);
t4v.setGravity(Gravity.CENTER);
tbrow.addView(t4v);
stk.addView(tbrow);
}
}
Und hier der Fehler:
E/TableInit(): Start!
E/TableInit(): {"equipment_private":[{"id":"1","name":"Name","home":"Unterkunft","wetsuit":"Anzug","board":"Board","rig":"Segel","harness":"Trapetz","renting_date":"23.01.19","rent_until":"23.12.19"},{"id":"2","name":"Name","home":"Unterkunft","wetsuit":"Anzug","board":"Board","rig":"Segel","harness":"Trapetz2","renting_date":"","rent_until":""}]}
W/System.err: org.json.JSONException: Not a primitive array: class org.json.JSONObject
at org.json.JSONArray.<init>(JSONArray.java:116)
at com.example.surftest.MainActivity.tableInit(MainActivity.java:90)
at com.example.surftest.MainActivity$RequestSelectAsync.onPostExecute(MainActivity.java:249)
at com.example.surftest.MainActivity$RequestSelectAsync.onPostExecute(MainActivity.java:228)
at android.os.AsyncTask.finish(AsyncTask.java:695)
at android.os.AsyncTask.access$600(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err: at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Der Fehler verweist auf Die Zeile Fünf in dem hier geposteten code ( Im Fehler code "MainActivity.java:90)").
Liebe Grüße und Danke im Vorraus.
Slarti
— geändert am 02.09.2019, 15:03:43 durch Moderator