gpt4 book ai didi

java Jackson 解析 json 数组

转载 作者:行者123 更新时间:2023-12-01 17:52:02 25 4
gpt4 key购买 nike

我需要解析方面的帮助,我尝试创建不同类型的模型类,但没有用,请在这里帮助我。 json 看起来像这样:

[
[
1518909300000,
"0.08815700",
"0.08828700",
"0.08780000",
"0.08792900",
"1727.93100000",
1518910199999,
"152.11480375",
5118,
"897.71600000",
"79.04635703",
"0"
],
[
1518910200000,
"0.08788400",
"0.08824200",
"0.08766200",
"0.08810000",
"1789.81300000",
1518911099999,
"157.20177729",
6201,
"898.89500000",
"78.95697080",
"0"
]
]

我正在尝试使用数据类解析它:

@JsonIgnoreProperties(ignoreUnknown = true)
public class KlineResponse {

public List<Kline> getKlineList() {
return klineList;
}

public List<Kline> klineList;

public class Kline {
@JsonProperty("4")
Double close;

@JsonProperty("8")
Integer tradesNumber;

public Double getClose() {
return close;
}

public void setClose(Double close) {
this.close = close;
}

public Integer getTradesNumber() {
return tradesNumber;
}

public void setTradesNumber(Integer tradesNumber) {
this.tradesNumber = tradesNumber;
}
}
}

还有这一行

mapper.readValue(response.getBody(), new TypeReference<List<KlineResponse>>(){})

mapper.readValue(response.getBody(), KlineResponse.class)

但是每次都会报错:无法从 START_ARRAY token 中反序列化 pt.settings.model.KlineResponse 的实例,请帮忙

最佳答案

核心问题是您收到了预期的数组数组和对象数组。将 mapper.readValue(response.getBody(), KlineResponse.class) 更改为 mapper.readValue(response.getBody(), Object[].class) 确认了这一点。

对于如何继续,您有几种选择:

  1. 按照 @cricket_007 在他的 answer 上的建议,从 Jackson 更改为标准 JSON 解析
  2. 不要将其映射到对象,而是尝试以不同的方式访问 JSON。请参阅@jschnasse 的 answer举个例子。
  3. 如果可以的话,更改您解析的文本格式
  4. 如果您无法更改输入的格式,那么您可以
    • 创建一个构造函数并使用 @JsonCreator 对其进行注释,如指示 here
    • 将输入解析为对象数组,并将解析后的数组输入到您自己的构造函数中

关于java Jackson 解析 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49028748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com