# JSONARRAY per Intent an andere Activity übergeben und umwandeln ggbf.



## wer112 (20. Nov 2022)

Ich arbe ja mit Volley und dort gibt es als Response nur 2 Varianten: Stings und JSONs. ICh lade den JSON in die App und entpacke da.

Leider will Volley Nur ein JSONArray dafür haben. Ich konnte den JsonArray problemlos im Log sehen.

Leider ist die einzige möglichkeit laut Android Studio, das ich beim intent.putExtra("ArrayName"; String.ofValue mache um es zu über geben.

Strings habe ich von den ganzen Importen erfolgreich übergeben. Es werden Strings, Booleans und dieses Array mit ein Intent übergeben.

Habe bei der Übergabe Seite oben: JSONArray produkte = null; 

Zum Entpacken nehme ich: produkte = intent.getStringArrayExtra("produkte"); Weil eine getJsonArrayExtra gibt es nicht, und so muss ich es in String[] setzen.

natürlich ist oben String[] produkte = null; . Leider ist die Log ausgabe immer null, obwohl das Log bei der anderen Activity angezeigt wird im Log.
Habe auch null weg gemacht, bringt genauso wenig. 

*1. Wie übergebe ich richtig ein JSONArray an eine andere Activity per Intent?

2. Wenn ich ein Boolean übergebe von einer Seite, möchte ich diesen Werte drüben auch haben. ICh weiß ja net, welcher Wert eingelesen wurden ist.
Wiso muss man beim getBooleanExtra("Wert") noch ein True oder false hinzufügen? ICh will ja den Wert von drüben und nicht selber festlegen.*


Ich danke euch für eure Unterstützung!


----------



## osion (18. Dez 2022)

Um ein JSONArray per Intent an eine andere Activity zu übergeben, kannst du es in einen String konvertieren und dann den String per putExtra() übergeben. Du kannst das JSONArray zum Beispiel mithilfe der Methode toString() in einen String konvertieren und anschließend mit putExtra() übergeben. An der empfangenden Seite kannst du den String dann wieder in ein JSONArray konvertieren, indem du die Methode parse() von JSONArray verwendest.

Beim Übergeben von Boolean-Werten per Intent musst du bei der Verwendung von getBooleanExtra() tatsächlich einen Default-Wert angeben, falls der Wert nicht übergeben wurde. Dies ist notwendig, da getBooleanExtra() immer einen Wert zurückgibt, auch wenn kein Wert übergeben wurde. Der Default-Wert wird dann zurückgegeben, falls kein Wert übergeben wurde. Du kannst zum Beispiel getBooleanExtra("key", false) verwenden, um den Boolean-Wert zu empfangen und false als Default-Wert festzulegen, falls kein Wert übergeben wurde.


```
Beispielcode für das Übergeben eines JSONArrays per Intent:

// An der sendenden Seite:
JSONArray array = ...; // Das JSONArray, das übergeben werden soll
Intent intent = new Intent(this, EmpfangendeActivity.class);
String arrayString = array.toString(); // Konvertiere das JSONArray in einen String
intent.putExtra("array", arrayString); // Übergebe den String per Intent
startActivity(intent);

// An der empfangenden Seite:
Intent intent = getIntent();
String arrayString = intent.getStringExtra("array"); // Empfange den String
JSONArray array = new JSONArray(arrayString); // Konvertiere den String zurück in ein JSONArray
```


```
Beispielcode für das Empfangen eines Boolean-Werts per Intent:

// An der sendenden Seite:
Boolean wert = ...; // Der Boolean-Wert, der übergeben werden soll
Intent intent = new Intent(this, EmpfangendeActivity.class);
intent.putExtra("wert", wert); // Übergebe den Boolean-Wert per Intent
startActivity(intent);

// An der empfangenden Seite:
Intent intent = getIntent();
Boolean wert = intent.getBooleanExtra("wert", false); // Empfange den Boolean-Wert und festlege false als Default-Wert
```


----------

