[英]java jackson parse json array
我需要解析方面的帮助,我尝试创建其他类型的模型类,但是没有用,请在这里帮助我。 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令牌中反序列化pt.settings.model.KlineResponse实例,请帮助
核心问题是您收到期望的数组数组和对象数组。 将mapper.readValue(response.getBody(), KlineResponse.class)
更改为mapper.readValue(response.getBody(), Object[].class)
确认。
您可以选择几种方式进行操作:
您不需要任何Java类。 没有要反序列化的JSON对象,只有数组。
在第二种情况下,杰克逊期望{ "klineList": [] }
在第一个[{ "klineList": [] }, { "klineList": [] }]
而且Kline对象仅可解析为{"4": 0.0, "8": 0 }
(将零替换为相同类型的任何值)...真的不清楚为什么您期望在给定数据的情况下能够正常工作...注释不是列表的索引。
另外,您的列表同时具有字符串和整数,因此您只能将其反序列化为TypeReference<List<List<Object>>>
,然后对其进行迭代以解析int,float或字符串
我可能会建议您使用标准的json解析器,而不是objectmapper
将JsonNode与JPointer一起使用。 避免创建POJO并通过JsonNode直接处理数据。
ObjectMapper mapper = new ObjectMapper();
JsonNode matrix = mapper.readValue(in, JsonNode.class);
matrix.forEach(array -> {
System.out.println("Next Values:");
System.out.println(array.at("/4").asDouble());
System.out.println(array.at("/8").asInt());
});
打印
Next Values:
0.087929
5118.0
Next Values:
0.0881
6201.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.