Input/Output JSON Objekt abrufen und ausgeben

Lord_of_War

Mitglied
Heyho,

habe erst vor kurzem angefangen mit Java zu programmieren...
Und komme bei folgendem einfach nicht weiter, hab schon einige Beispiele gesucht und gefunden und trotzdem hab ich es noch nicht verstanden. (die meisten waren einfach schon zu komplex gemacht, ich bräuchte erstmal nur was ganz einfaches)

Wie kann man mit Java ein JSON Daten Objekt von einer URL abfragen, und wie kann ich dann auf die Daten zugreifen?

Datenstruktur wäre zb so:
Code:
[
	{
		"group_name":"Basisangaben",
		"group_fields":[
			{
				"name":"Geschlecht",
				"value":"M\u00e4nnlich"
			},
			{
				"name":"Geburtsdatum",
				"value":"1978-2-4"
			},
			{
				"name":"PLZ",
				"value":"12345"
			},
			{
				"name":"Wohnort",
				"value":"Berlin"
			},
			{
				"name":"Land",
				"value":"Germany"
			}
		]
	}
]

Wäre echt cool, wenn mir das jemand kurz und knapp erklären könnte... :-(

lg
 
Zerleg doch einfach den String.
So wie ich das seh, ist die Struktur immer gleich.
Java:
public static String c(String str) {
		//nach : suchen, das trennt ja immer den Inhalt der Variablen ab
		String group_name = str.substring(str.indexOf(":") + 2,
				//dann nach dem Ende des Strings suchen
				str.indexOf("\"", str.indexOf(":") + 2));
		return group_name;
	}
 
Ok, versuche es gerade mit GSON.

Habe die GSON runtergeladen und die JAR beim Projekt beim Java Build Path -> Libraries hinzugefügt (mit Eclipse)...
Dann importiere ich es noch mit
Java:
import com.google.gson.Gson;

Nächster Schritt wäre ja der Aufruf
Java:
Gson gson = new Gson();

Aber ich erhalte folgenden Fehler:
Could not find class 'com.google.gson.Gson'...

Muss ich die Class sonst noch irgendwo angeben?


€:
ACHTUNG! Dieses Problem konnte ich beheben... 🙂 Musste die JAR nur unter libs reinkopieren.
 
Zuletzt bearbeitet:
Probiers mal so:
1.rechtsklick auf dein Project.
2.properties
3.Java Build Path
4.Libraries
5.Add external Jars
Und dann ist die Jar in deinem Projekt drin.
Wenn du das so gemacht hast, dann prüf nochmal,
ob du die richtige jar ausgewählt hast.(ich hab die falsche genommen😱)
 
Ich verwende seit einiger Zeit das hier für JSON:

Downloads - json-simple - JSON.simple - A simple Java toolkit for JSON - Google Project Hosting

Einfach die Datei json-simple-1.1.1.jar runterladen.
In deiner Entwicklungsumgebung (ich benutze Netbeans)

Rechtsklick auf Projekt -> Properties -> Libraries

Add Library -> Create

Hier gibts du jetzt den Namen ein (z.b. JSON oder JSON-Simple) und wählst als Library Type Class Libraries aus. Anschließend im Reiter Classpath auf "Add JAR/Folder" wählst du die Datei aus, die du downgeloadet hast.
Dann kannst du die Library, die du eben erstellt hast deinem Projekt hinzufügen.

Jetzt sollte der Import klappen.

Ich vermute den selben Grund bei dir, dass der Import von Gson nicht klappt, weil du die Library noch nicht deinem Projekt hinzugefügt hast.



Falls du dich für JSON-Simple entscheidest, dann kannst du z.B. mit

Java:
JSONObject data = (JSONObject) JSONValue.parse("dein String");

ein JSON-Objekt aus einem String erstellen und mit
Java:
JSONObjekt neuesObjekt = (JSONObjekt) data.get("Name des Feldes im JSON Objekt, das du auslesen möchtest");

Ich hoffe, ich konnte helfen.

//Edit: Entschuldige, ich hab übersehen, dass mein Vorposter das mit dem Library einbinden bereits erwähnt hatte 🙂
 
Oh man ich verzweifle noch daran... 😀

Wie kann ich den mit so einem blöden JSON Array oder Objekt arbeiten?!
Mit php wandle ich das JSON Objekt einfach um, und laufe dann einfach durch das Objekt oder Array und kann dann in jeder Zeile ganz einfach auf die Inhalte zugreifen...zb:
PHP:
$news = json_decode($json_obj);
foreach($news as $row){
     echo $row->news_title;
     echo $row->news_inhalt;
     //und bei einem unter Objekt kann ich es auch einfach wieder per foreach durchlaufen, zb:
     foreach($row->comments as $comment){
           echo $comment->comment_id;
     }
}

Und falls es ein array war, mach ich halt anstatt "$row->news_title" -> "$row['news_title']" usw...

Wie macht man so etwas mit einem JSON Objekt/ Array bei Java?
 
Zuletzt bearbeitet:
Ich kann das jetzt nur aus meinen Erfahrungen mit der JSON-simple library beschreiben.
Ein Beispiel als JSON String, das ich dann in ein JSON Object umwandle sieht z.b. so aus:

Code:
{
"replyText": "data successfully retrieved", 
"data": [{"1":"irgendwas", "2":"nochwas", "3":"wiederwas"}], 
"replyCode": "200"
}

Das heißt, ich habe ein JSON-Objekt, das besteht aus 3 Elementen:
[0]: replyText
[1]: data
[2]: replyCode


Das Element Data ist ein JSON Array, welches aus 1 Eintrag mit einem JSON-Objekt besteht.
Ich denke soweit solltest du mitkommen.


Jetzt die Operationen darauf:

So erstellst du ein JSONObject von einem String:

Java:
JSONObject data = (JSONObject) JSONValue.parse("dein String");

Falls du ein JSONObject und nicht einfach ein "normales" Objekt erstellen möchtest, ist es wichtig, den TypeCast (Typumwandlung)
Java:
(JSONObject)
auszuführen.

In meinem Beispiel kann ich jetzt folgendermaßen auf die Inhalte meines Objekts zugreifen:

Java:
// data = dein JSONObject
// Den Inhalt des ersten Elements [0] in einem String speichern
String erstesElement = data.get("replyText").toString();

// Das zweite Element [1] in einem JSONArray speichern, auch hier wieder TypeCast wichtig!
JSONArray zweitesElement = (JSONArray) data.get("data");

// Das dritte Element [2] in einem String speichern
String drittesElement = data.get("replyCode");

Alle Operationen auf JSONArrays und JSONObjects geben immer ein normales Objekt zurück. Möchtest du weiterhin mit JSONObjects und -Arrays arbeiten, musst du den TypeCast ausführen.

Ich hoffe, ich konnte dir etwas weiterhelfen
 

Neue Themen


Zurück
Oben