[英]Parsing JSON in JAVA usng Gson
因此,我嘗試使用Gson在Java中解析JSON對象。 我正在嘗試從網站使用API。 這是股票代碼: https : //api.coinmarketcap.com/v1/ticker/bitcoin/
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"
}
]
我正在使用Jersey來使用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,但在com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(ReflectiveTypeAdapterFactory)的第1行第2列路徑$處為BEGIN_ARRAY .java:224)com.google.gson.Gson.fromJson(Gson.java:887)com.google.gson.Gson.fromJson(Gson.java:852)com.google.gson.Gson.fromJson( com.google.gson.Gson.fromJson的Gson.java:801)(com.randomizer.CoinMarketCap.main(CoinMarketCap.java:21)的Json(Gson.java:773))原因:java.lang.IllegalStateException:預期為BEGIN_OBJECT但是BEGIN_ARRAY在第1行第2列路徑$在com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(ReflectiveTypeAdapterFactory.java:213在com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter。 )...另外5個
您在我的代碼中看到任何錯誤嗎? 謝謝。
錯誤消息指出JSON字符串包含一個數組( “ was BEGIN_ARRAY” ),但是您嘗試將其解析為一個對象( “ Expected BEGIN_OBJECT” )。
正如我們在您提供的JSON字符串中看到的那樣,它實際上是一個數組,您感興趣的對象包裝在方括號( [ ... ]
)中。
嘗試將其解析為例如List<CryptoCurrency>
然后:
Type listType = new TypeToken<ArrayList<CryptoCurrency>>(){}.getType();
List<CryptoCurrency> list = new Gson().fromJson(jsonString, listType);
( Type
為java.lang.reflect.Type
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.