Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Der Zugriff auf eine Map erfolgt über die Methode get. In der Map kann offensichtlich eine weitere Map oder Liste enthalten sein. Dann muss man den Rückgabewert entsprechend casten.
Java:
Map<String, Object> map = ...
Object o = map.get("encodedValue");
System.out.println(o);
Der Zugriff auf eine Map erfolgt über die Methode get. In der Map kann offensichtlich eine weitere Map oder Liste enthalten sein. Dann muss man den Rückgabewert entsprechend casten.
Java:
Map<String, Object> map = ...
Object o = map.get("encodedValue");
System.out.println(o);
Danke für deine Antwort. So was hatte ich schon probiert bekomme aber eine Fehlermeldung, da der erste Wert auch wieder ein Key ist "fieldvalues" und kein JsonObject oder JsonArray.
Danke für deine Antwort. So was hatte ich schon probiert bekomme aber eine Fehlermeldung, da der erste Wert auch wieder ein Key ist "fieldvalues" und kein JsonObject oder JsonArray.
Du hast also ein JSON Objekt (die äußeren { } ). Dieses Objekt hat ein Attribut mit dem Namen fieldValues und als Wert hat dies ein Array ( das siehst Du an den [ ] ).
In dem Array hast Du dann wieder Objekte. Und diese haben die Eigenschaften fieldId, fieldName, tableRows und computed.
Das kann noch weiter vertieft sein - so haben wir kein Beispiel, was in tableRows stehen würde. Da könnte also auch ein komplexes Objekt gespeichert sein.
Diese Struktur kannst Du dann aber auch ganz manuell mit JsonObject / JsonArray / ... Klassen durchgehen, wenn Du dies unbedingt wolltest.
Das Vorgehen wäre einfach:
Erstell die Klassen, die dies abbilden.
Nutz eine der Libraries aus den gegebenen Links um das JSON einzulesen und eben Instanzen von der erstellten Klasse zu haben.
Mit gson würde sowas so in der Art aussehen (Jetzt einfach einmal als UnitTest geschrieben und mit inneren Klassen und ich habe natürlich den json Text etwas angepasst um ein gültiges json zu haben:
Java:
package de.kneitzel;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import lombok.Getter;
import lombok.Setter;
import org.junit.jupiter.api.Test;
import java.util.List;
public class JsonTest {
@Getter
@Setter
public static class Container {
@SerializedName("fieldValues")
private List<FieldValue> fieldValues;
}
@Getter
@Setter
public static class FieldValue {
@SerializedName("fieldId")
private int fieldId;
@SerializedName("fieldName")
private String fieldName;
@SerializedName("encodedValue")
private String encodedValue;
@SerializedName("tableRows")
private Object tableRows; // null, könnte je nach Bedarf angepasst werden
@SerializedName("computed")
private boolean computed;
}
@Test
public void testUnmarshal() {
String jsonText = "{\"fieldValues\":[{\"fieldId\":0,\"fieldName\":\"ID\",\"encodedValue\":\"1958\",\"tableRows\":null,\"computed\":false},{\"fieldId\":76,\"fieldName\":\"Parent\",\"encodedValue\":null,\"tableRows\":null,\"computed\":false}]}";
Gson gson = new Gson();
Container container = gson.fromJson(jsonText, Container.class);
System.out.println("Parsed JSON:");
for (FieldValue fieldValue : container.getFieldValues()) {
System.out.println("Field Name: " + fieldValue.getFieldName() + ", Encoded Value: " + fieldValue.getEncodedValue());
}
}
}
Aber schau Dir einfach die Links an - da findest Du deutlich mehr an Erläuterungen.
Du hast also ein JSON Objekt (die äußeren { } ). Dieses Objekt hat ein Attribut mit dem Namen fieldValues und als Wert hat dies ein Array ( das siehst Du an den [ ] ).
In dem Array hast Du dann wieder Objekte. Und diese haben die Eigenschaften fieldId, fieldName, tableRows und computed.
Das kann noch weiter vertieft sein - so haben wir kein Beispiel, was in tableRows stehen würde. Da könnte also auch ein komplexes Objekt gespeichert sein.
Diese Struktur kannst Du dann aber auch ganz manuell mit JsonObject / JsonArray / ... Klassen durchgehen, wenn Du dies unbedingt wolltest.
Das Vorgehen wäre einfach:
Erstell die Klassen, die dies abbilden.
Nutz eine der Libraries aus den gegebenen Links um das JSON einzulesen und eben Instanzen von der erstellten Klasse zu haben.
Mit gson würde sowas so in der Art aussehen (Jetzt einfach einmal als UnitTest geschrieben und mit inneren Klassen und ich habe natürlich den json Text etwas angepasst um ein gültiges json zu haben:
Java:
package de.kneitzel;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import lombok.Getter;
import lombok.Setter;
import org.junit.jupiter.api.Test;
import java.util.List;
public class JsonTest {
@Getter
@Setter
public static class Container {
@SerializedName("fieldValues")
private List<FieldValue> fieldValues;
}
@Getter
@Setter
public static class FieldValue {
@SerializedName("fieldId")
private int fieldId;
@SerializedName("fieldName")
private String fieldName;
@SerializedName("encodedValue")
private String encodedValue;
@SerializedName("tableRows")
private Object tableRows; // null, könnte je nach Bedarf angepasst werden
@SerializedName("computed")
private boolean computed;
}
@Test
public void testUnmarshal() {
String jsonText = "{\"fieldValues\":[{\"fieldId\":0,\"fieldName\":\"ID\",\"encodedValue\":\"1958\",\"tableRows\":null,\"computed\":false},{\"fieldId\":76,\"fieldName\":\"Parent\",\"encodedValue\":null,\"tableRows\":null,\"computed\":false}]}";
Gson gson = new Gson();
Container container = gson.fromJson(jsonText, Container.class);
System.out.println("Parsed JSON:");
for (FieldValue fieldValue : container.getFieldValues()) {
System.out.println("Field Name: " + fieldValue.getFieldName() + ", Encoded Value: " + fieldValue.getEncodedValue());
}
}
}
Aber schau Dir einfach die Links an - da findest Du deutlich mehr an Erläuterungen.
Du hast also ein JSON Objekt (die äußeren { } ). Dieses Objekt hat ein Attribut mit dem Namen fieldValues und als Wert hat dies ein Array ( das siehst Du an den [ ] ).
In dem Array hast Du dann wieder Objekte. Und diese haben die Eigenschaften fieldId, fieldName, tableRows und computed.
Das kann noch weiter vertieft sein - so haben wir kein Beispiel, was in tableRows stehen würde. Da könnte also auch ein komplexes Objekt gespeichert sein.
Diese Struktur kannst Du dann aber auch ganz manuell mit JsonObject / JsonArray / ... Klassen durchgehen, wenn Du dies unbedingt wolltest.
Das Vorgehen wäre einfach:
Erstell die Klassen, die dies abbilden.
Nutz eine der Libraries aus den gegebenen Links um das JSON einzulesen und eben Instanzen von der erstellten Klasse zu haben.
Mit gson würde sowas so in der Art aussehen (Jetzt einfach einmal als UnitTest geschrieben und mit inneren Klassen und ich habe natürlich den json Text etwas angepasst um ein gültiges json zu haben:
Java:
package de.kneitzel;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import lombok.Getter;
import lombok.Setter;
import org.junit.jupiter.api.Test;
import java.util.List;
public class JsonTest {
@Getter
@Setter
public static class Container {
@SerializedName("fieldValues")
private List<FieldValue> fieldValues;
}
@Getter
@Setter
public static class FieldValue {
@SerializedName("fieldId")
private int fieldId;
@SerializedName("fieldName")
private String fieldName;
@SerializedName("encodedValue")
private String encodedValue;
@SerializedName("tableRows")
private Object tableRows; // null, könnte je nach Bedarf angepasst werden
@SerializedName("computed")
private boolean computed;
}
@Test
public void testUnmarshal() {
String jsonText = "{\"fieldValues\":[{\"fieldId\":0,\"fieldName\":\"ID\",\"encodedValue\":\"1958\",\"tableRows\":null,\"computed\":false},{\"fieldId\":76,\"fieldName\":\"Parent\",\"encodedValue\":null,\"tableRows\":null,\"computed\":false}]}";
Gson gson = new Gson();
Container container = gson.fromJson(jsonText, Container.class);
System.out.println("Parsed JSON:");
for (FieldValue fieldValue : container.getFieldValues()) {
System.out.println("Field Name: " + fieldValue.getFieldName() + ", Encoded Value: " + fieldValue.getEncodedValue());
}
}
}
Aber schau Dir einfach die Links an - da findest Du deutlich mehr an Erläuterungen.