- 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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.