簡體   English   中英

在JAVA中使用JSON解析JSON

[英]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);

Typejava.lang.reflect.Type 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM