有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在JAVA usng Gson中解析JSON

所以我试图用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);

    }
}

我犯了个错误

Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was 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) at com.randomizer.CoinMarketCap.main(CoinMarketCap.java:21) Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $ at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213) ... 5 more

你看到我的代码有什么错误吗?谢谢


共 (0) 个答案