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

这是什么数据格式,我如何解析Java模型

阙佐
2023-03-14

我正在使用外部api(Binance)获取特定加密符号的价格,并且我接收到的数据格式如下:

[   
    [
        1614556800000,
        "15.00700000",
        "15.38700000",
        "14.14100000",
        "14.37900000",
        "453842.30000000",
        1615161599999,
        "6709971.37110000",
        3535,
        "216741.30000000",
        "3217265.31930000",
        "0"
    ],
    [
        1615161600000,
        "14.43300000",
        "14.85900000",
        "14.05000000",
        "14.29200000",
        "539248.70000000",
        1615766399999,
        "7792792.20870000",
        3549,
        "278787.20000000",
        "4045258.39210000",
        "0"
    ]
]

而且api还解释了每个值的含义。我尝试为这些字段创建Java模型,并使用RestTemplate解析它们,但这不起作用。

PriceChange[] priceChangeArray = restTemplate.getForObject(uri, PriceChange[].class);

我希望在这个API上使用JSON格式,因为其他endpoint使用这种格式返回值。我之所以问这个问题,是因为我想避免为此创建解析器。

编辑:

字段说明:

  [
    1499040000000,      // Open time
    "0.01634790",       // Open
    "0.80000000",       // High
    "0.01575800",       // Low
    "0.01577100",       // Close
    "148976.11427815",  // Volume
    1499644799999,      // Close time
    "2434.19055334",    // Quote asset volume
    308,                // Number of trades
    "1756.87402397",    // Taker buy base asset volume
    "28.46694368",      // Taker buy quote asset volume
    "17928899.62484339" // Ignore.
  ]

PriceChange.java

@Entity
@IdClass(PriceChangeKey.class)
public class PriceChange {
    @Id
    private String symbol;

    private String interval;

    @Id
    @Temporal(TemporalType.TIMESTAMP)
    private Date openTime;

    @Id
    @Temporal(TemporalType.TIMESTAMP)
    private Date closeTime;

    private Double open;
    private Double high;
    private Double low;
    private Double close;
    private Double volume;
    private Double quoteAssetVolume;
    private Integer numberOfTrades;
    private Double takerBuyBaseAssetVolume;
    private Double takerBuyQuoteAssetVolume;
    private Double ignore;
}

共有1个答案

孟乐
2023-03-14

格式是JSON,但不是自动解析到POJO的好布局。

解析到object[][],然后手动将条目映射到POJO。

Object[][] data = restTemplate.getForObject(uri, Object[][].class);
List<PriceChange> priceChanges = new ArrayList<>();
for (Object[] record : data) {
    priceChanges.add(new PriceChange(
            ((Number) record[0]).longValue(),
            new BigDecimal((String) record[1]),
            new BigDecimal((String) record[2]),
            new BigDecimal((String) record[3]),
            new BigDecimal((String) record[4]),
            new BigDecimal((String) record[5]),
            ((Number) record[6]).longValue(),
            new BigDecimal((String) record[7]),
            ((Number) record[8]).intValue(),
            new BigDecimal((String) record[9]),
            new BigDecimal((String) record[10]),
            new BigDecimal((String) record[11])));
}

或者使用setter方法和任何适当的数据类型。

 类似资料:
  • 以下是我正在使用的数据结构示例- 所有数据都在字符串中,包括子列表都是字符串值 子列表值可能与其他子列表值重复 我需要能够获得大小并遍历子列表 本质上,每个子列表都有我需要获取的引用ID,以及与该列表关联的子列表ID 我不知道哪一个最合适。我可能会先选择我能实施的那个。 我应该使用、、还是与列表一起使用?

  • 本文向大家介绍Java解析XML格式数据的方法详解,包括了Java解析XML格式数据的方法详解的使用技巧和注意事项,需要的朋友参考一下 最初,XML 语言仅仅是意图用来作为 HTML 语言的替代品而出现的,但是随着该语言的不断发展和完善,人们越来越发现它所具有的优点:例如标记语言可扩展,严格的语法规定,可使用有意义的标记,内容存储和表现分离等等优势注定了该语言从诞生之日起就会走向辉煌。 XML 语

  • 我试图解析通过api调用获取的xml数据。我可以使用file\u get\u内容来读取字符串,但simpleXML\u load\u字符串似乎无法读取它。我可以将它保存到一个文件中,然后simpleXML\u load\u文件工作。但我宁愿不把内容写入文件。我似乎也不明白如何使用DOM或XMLParse。我不熟悉PHP和解析XML。api调用的输出数据如下所示。 我发现问题在于我在浏览器中看到的实

  • TLV格式数据解析。 什么是TLV数据?传送门:http://blog.csdn.net/chexlong/article/details/6974201 在标准的TLV数据解析过程中会遇到很多问题。在目前的开源的C/C 的项目中代码十分的庞大,整合起来十分不方便并没有OC的代码,故作者封装了这个类库供需要使用TLV格式数据的同学们学习使用。 [Code4App.com]

  • 用具有一致性且对用户友好的方式展示如日期时间这样的数据. 确保呈现的信息是简洁的, 避免不必要的冗余. 日期与时间 此指南适用于: 当前日期与时间 日期与时间设置, 例如闹钟或提醒 当一个对象被创建, 发送, 编辑或其他操作行为发生时的时间和日期 基本显示 关于时间, 使用大写的 AM 或 PM 区分时段, 用空格与时间分隔开. 10:00 AM 如果时间戳正好是当日, 也通常不要要显示例如 “今

  • 问题内容: 什么是空指针异常,什么原因导致它们? 可以使用哪些方法/工具确定原因,以阻止异常导致程序过早终止? 问题答案: 声明引用变量(即对象)时,实际上是在创建指向对象的指针。考虑以下代码,在其中声明基本类型的变量int: 在此示例中,变量是an ,Java会0为你初始化它。当你10在第二行为其分配值时,你的值将写入所指的存储位置x。 但是,当你尝试声明引用类型时,会发生一些不同的事情。采取以