所以我試圖解析使用GSON Java中的JSON對象。 我想從網站上使用API。 這是代碼: https://api.coinmarketcap.com/v1/ticker/bitcoin/解析JSON在JAVA USNG 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 at line 1 column 2 path $ at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(ReflectiveTypeAdapterFactory.java:224) at com.google.gson.Gson.fromJson(Gson.java:887 )at com.google.gson.Gson.fromJson(Gson.java:852)at com.google.gson.Gson.fromJson(Gson.java:801)at com.google.gson.Gson.fromJson(Gson的.java:773)在 com.randomizer.CoinMarketCap.main(CoinMarketCap.java:21)產生的原因: java.lang.IllegalStateException:預期BEGIN_OBJECT但 BEGIN_ARRAY位於第1行第2列路徑$在 com.google。 gson.stream.JsonReader.beginObject(JsonReader.java:385)在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(R eflectiveTypeAdapterFactory.java:213) ... 5更多
您是否在我的代碼中看到任何錯誤?謝謝。
請出示一個例子JSON了。看起來在某種程度上JSON包含一個數組,但您嘗試將其存儲在一個對象中。 – juzraai
的[如何反序列化使用GSON JSON數組]可能的複製(https://stackoverflow.com/questions/10292514/how-to-deserialize-a-json-array-using-gson)。你的JSON是一個只包含一個對象的數組,所以你需要反序列化數組。 –
1)爲什麼你要求XML並試圖解析JSON? 2)打印'bitcoinDetails'。它是什麼? –