Also ich versuche, ein JSON-Objekt in Java mit Gson zu analysieren. Ich versuche, eine API von einer Website zu konsumieren. Dies ist der Ticker: https://api.coinmarketcap.com/v1/ticker/bitcoin/Parsen von JSON in JAVA usng Gson
Die JSON sieht wie folgt aus:
[
{
"id": "bitcoin",
"name": "Bitcoin",
"symbol": "BTC",
"rank": "1",
"price_usd": "3591.95",
"price_btc": "1.0",
"24h_volume_usd": "3263990000.0",
"market_cap_usd": "59516499433.0",
"available_supply": "16569412.0",
"total_supply": "16569412.0",
"percent_change_1h": "1.02",
"percent_change_24h": "15.59",
"percent_change_7d": "-15.18",
"last_updated": "1505563475"
}
]
I Jersey bin mit dem API für das Konsumieren und ich möchte diese JSON in ein Objekt verwandeln.
Dies ist das Objekt, das durch Parsen der JSON gebaut werden soll:
public class CryptoCurrency {
String id;
String name;
String symbol;
String rank;
String price_usd;
String price_btc;
String market_cap_usd;
String available_supply;
String total_supply;
String percent_change_1h;
String percent_change_24h;
String percent_change_7d;
String last_updated;
}
Dies ist mein Code:
public class CoinMarketCap {
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
WebTarget target = client.target("https://api.coinmarketcap.com/v1/ticker/bitcoin/");
String bitoinDeteils = target.request(MediaType.TEXT_XML).get(String.class);
Gson gson = new GsonBuilder().create();
CryptoCurrency bitcoin = gson.fromJson(bitoinDeteils, CryptoCurrency.class);
System.out.println(bitcoin);
}
}
Ich erhalte einem Fehler
Exception in thread " main "com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Erwartete BEGIN_OBJECT aber war BEGIN_ARRAY in Zeile 1 Spalte 2 Pfad $ unter com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read (ReflectiveTypeAdapterFactory.java:224) bei com.google.gson.Gson.fromJson (Gson.java:887) um com.google.gson.Gson.fromJson (Gson.java:852) um com.google.gson.Gson.fromJson (Gson.java:801) um com.google.gson.Gson.fromJson (Gson .java: 773) bei com.randomizer.CoinMarketCap.main (CoinMarketCap.java:21) verursacht durch: java.lang.IllegalStateException: Erwartete BEGIN_OBJECT aber war bei com.google BEGIN_ARRAY in Zeile 1 Spalte 2 Pfad $. gson.stream.JsonReader.beginObject (JsonReader.java:385) um com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read (R eflectiveTypeAdapterFactory.java:213) ... 5 mehr
Haben Sie etwas falsch in meinem Code zu sehen? Vielen Dank.
zeigen Bitte ein Beispiel zu JSON. Anscheinend enthält der JSON ein Array, aber Sie versuchen, es in einem Objekt zu speichern. – juzraai
Mögliches Duplikat von [Wie ein JSON-Array mit Gson deserialisiert wird] (https://stackoverflow.com/questions/10292514/how-to- deserialize-a-json-array-using-gson). Ihr JSON ist ein Array, das nur ein Objekt enthält. Daher müssen Sie das Array deserialisieren. –
1) Warum fordern Sie XML an und versuchen, JSON zu analysieren? 2) Print 'bitcoinDetails'. Was ist es? –