Gsonを使用してJavaでJSONオブジェクトを解析しようとしています。 私はウェブサイトからAPIを消費しようとしています。 これはティッカーです: https://api.coinmarketcap.com/v1/ticker/bitcoin/JavaでJSONを解析するGson
JSONは次のようになります。
[
{
"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"
}
]
私はAPIを消費するためのジャージを使用していますが、私はオブジェクトにこのJSONを変換したいです。
これはJSONを解析することによって構築されるべき対象である:
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;
}
は、これは私のコードです:
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);
}
}
私はスレッドでエラー
例外を取得します」メイン "com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:BEGIN_OBJECTが予想されましたが、でしたBEGIN_ARRAY 1行目の列2のパス$ com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(ReflectiveTypeAdapterFactory.java:224) at com.google.gson.Gson.fromJson(Gson.java:887) ) com.google.gson.Gson.fromJson(Gson.java:852) com.google.gson.Gson.fromJson(Gson.java:801) com.google.gson.Gson.fromJson(Gson.json: .java:773)によって引き起こさ com.randomizer.CoinMarketCap.main(CoinMarketCap.java:21)において: java.lang.IllegalStateException:期待BEGIN_OBJECTしかし com.googleのライン1カラム2パス$で BEGIN_ARRAYでした。 gson.stream.JsonReader.beginObject(JsonReader.java:385)at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(R eflectiveTypeAdapterFactory.java:213) ... 5 more
私のコードに間違いがありますか?ありがとう。
があまりにも例JSONをご提示ください。ある時点でJSONに配列が含まれているように見えますが、オブジェクトに格納しようとしています。 – juzraai
[Gsonを使用してJSON配列をデシリアライズする方法](https://stackoverflow.com/questions/10292514/how-to-deserialize-a-json-array-using-gson)の可能な複製。 JSONは1つのオブジェクトだけを含む配列なので、配列を逆シリアル化する必要があります。 –
1)なぜXMLをリクエストしてJSONを解析しようとしていますか? 2) 'bitcoinDetails'を表示します。それは何ですか? –