当前位置: 首页 > 知识库问答 >
问题:

在Java usng Gson中解析JSON

庾波光
2023-03-14

因此,我试图使用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);

    }
}

我有个错误

线程“main”com.google.gson.jsonSyntaxException:java.lang.IllegalStateException:应为BEGIN_OBJECT,但在第1行第2列路径$at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$adapter.read(reflectiveTypeAdapterFactory:224)在com.google.gson.gson.fromJSON(gson.java:887)在com.google.gson.gson.fromJSON(gson.java:852)在

你看到我的代码有什么不对吗?多谢了。

共有1个答案

李嘉胜
2023-03-14

错误消息说JSON字符串包含一个数组(“was begin_array”),但您尝试将其解析为一个对象(“expected begin_object”)。

正如我们在您提供的JSON字符串中所看到的,它确实是一个数组,您感兴趣的对象被包装在方括号中([...])。

尝试将其解析列表 ,然后:

Type listType = new TypeToken<ArrayList<CryptoCurrency>>(){}.getType();
List<CryptoCurrency> list = new Gson().fromJson(jsonString, listType);

(typejava.lang.reflect.type。)

 类似资料:
  • 问题内容: 我有以下JSON字符串: 如何在PHP中解析它并提取s 列表? 问题答案: 您可以使用该函数来解析PHP中的JSON数据(至少=> 5.2.0)。一旦有了PHP对象,就可以轻松地遍历所有配方/成员并使用以下内容访问其标题: (对不起,我现在无法真正运行此代码。希望无论如何它都会有所帮助。)

  • 问题内容: 我在解析Json文件时遇到问题。尝试解析一个Json文件: 这是我为其定义的两个结构。 暂停结构: AttachedModel模型结构: 然后,我为其创建一个键和一个函数: 在功能上: 这是输出 问题是,即使有数据,该行也始终为假,并且转到“ 有人可以告诉我这里的问题在哪里吗? 问题答案: 为您的json创建此模型类: 然后,您可以像这样解析它:

  • 问题内容: 我想解析JavaScript中的JSON字符串。响应就像 我怎样才能获得的值,并从这个? 问题答案: 在JavaScript中解析JSON的标准方法是 该API是在ES5(2011)中引入的,此后按市场份额和Node.js在超过99%的浏览器中已实现。它的用法很简单: 唯一无法使用的时间是您是否在为旧版浏览器编程,例如IE 7(2006),IE 6(2001),Firefox 3(20

  • 问题内容: 是否可以解析的? 我不是要创建一个字符串。相反,我想解析作为传入的字符串。 问题答案: 更新:从SQL Server 2016开始 ,现在可以在TSQL中解析JSON了。 在本地,没有任何支持。您必须使用CLR。就这么简单,除非您有巨大的受虐行为并且想要用SQL编写JSON解析器 通常,人们要求从数据库中获取JSON输出,并且互联网上有一些示例。但是进入数据库?

  • 问题内容: 我正在使用一个API,该API返回如下所示的JSON 在Swift中,我使用两个函数来获取并解析JSON 然后我用 可以很好地解析JSON。当我打印出 我得到了数组的所有内容。但是,我无法访问每个单独的索引。我很肯定这是一个数组,因为我之间 返回正确的长度。但是,如果我尝试通过使用访问单个索引 XCode关闭语法高亮显示并给我以下信息: 并且代码将无法编译。 这是XCode 6的错误,

  • 我正在使用来解析Json数据。我的Json数据如下: GsonParse.java 我使用以下方法来解析此JSON数据。 我面对以下错误。

  • 问题内容: 我有与Excel VBA中相同的问题:解析的JSON对象循环,但是找不到任何解决方案。我的JSON具有嵌套对象,因此建议的解决方案(如VBJSON和vba-json)不适用于我。我还修复了其中之一,使其正常工作,但是由于doProcess函数的许多递归,结果是调用堆栈溢出。 最好的解决方案似乎是原始帖子中看到的jsonDecode函数。它非常快速且非常有效。我的对象结构全部位于类型JS

  • 我在mobx商店中有一个获取请求,看起来像这样: this.lego部件位于如下构造函数中: 我试图访问数组的值,应该在legoParts中。然而,当我控制日志legoParts时,我得到了一堆数据,包括PromiseState(已解决)和PromiseValue。如何简单地访问promise值?我也很困惑,因为尽管PromiseState说已解决,但对象的开头说 谢谢你的帮助!