列出一份清单<;列表<;BigDecimal>&燃气轮机;在Java中使用Jackson的drom json值
我得到了这个json:列出一份清单<;列表<;BigDecimal>&燃气轮机;在Java中使用Jackson的drom json值,java,json,parsing,jackson,Java,Json,Parsing,Jackson,我得到了这个json: {"channel":"123","data":"[[\"7132.09114\",\"0.00800000\"],[\"7131.71462\",\"0.08900000\"],[\"7122.94432\",\"0.75000000\"],[\"7122.87085\",\"0.20000000\"],[\"7122.38788\",\"0.00300000\"]]","event":"updated"} 如何从“数据”值生成List?我试图在readValue()
{"channel":"123","data":"[[\"7132.09114\",\"0.00800000\"],[\"7131.71462\",\"0.08900000\"],[\"7122.94432\",\"0.75000000\"],[\"7122.87085\",\"0.20000000\"],[\"7122.38788\",\"0.00300000\"]]","event":"updated"}
如何从“数据”值生成List- >?我试图在readValue()中使用TypeReference获取它,但我得到了NPE,因为该数组位于“”中
保存数据的类:
public class Result {
@JsonProperty("channel")
private String channel;
@JsonProperty("data")
private List<List<BigDecimal>> data;
}
公共类结果{
@JsonProperty(“频道”)
专用字符串通道;
@JsonProperty(“数据”)
私人名单数据;
}
为什么不使用类似的东西
String jsonInput = "[[\"7132.09114\",\"0.00800000\"],[\"7131.71462\",\"0.08900000\"],[\"7122.94432\",\"0.75000000\"],[\"7122.87085\",\"0.20000000\"],[\"7122.38788\",\"0.00300000\"]]";
List<List<BigDecimal>> myObjects = objectMapper.readValue(jsonInput, new TypeReference<List<List<BigDecimal>>>(){});
String jsonInput=“[\'7132.09114\',\'0.00800000\',[\'7131.71462\',\'0.08900000\',[\'7122.94432\',\'0.75000000\',[\'7122.87085\','0.20000000\',[\'7122.38788\','0.00300000\'”;
List myObjects=objectMapper.readValue(jsonInput,newtypereference(){});
什么是数据值?这是您的整个json吗?从json的角度来看,data
是字符串类型。像Jackson这样的解析器不能做你想做的事情,我认为你应该自己做;)你能解释一下上面的JSON中BigDecimal的确切位置吗?理想情况下,还有一个希望输出的示例。@Haris我需要分析这个数组[\'7132.09114\',\'0.00800000\',[\'7131.71462\',\'0.08900000\'],…到List- >您还可以发布您保存数据的类的外观吗?您是如何从它们的字符串中获得
jsonInput
的?为此,我决定将数据类型从List更改为String,并应用您的解决方案。它适合me@SotiriosList o=mapper.readValue(response.getData()),new TypeReference(){});
@Artem您可以这样做,但这是不必要的,在这个答案中也不清楚。@Artem我建议您检查JSON信息的来源。它应该返回一个正确的JSON。否则,您将不得不求助于上述肮脏的解决方案来进行JSON解析。