如何读取未命名的 JSon 值

How to read unnamed JSon Values

当使用 Jackson ObjectMapper 解析给定的 JSon 格式时,出现以下错误: Unexpected end-of-input: expected close marker for Array。我如何解析这种格式?

[
  [
    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.
  ]
]

我从外部 REST API 得到这个结果。格式不受我控制。

验证正确解析的测试用例:

class JSonHelperTest {

  private static final String KLINES = "[\n" +
          "[\n" +
          "  [\n" +
          "    1499040000000,\n" +
          "    \"0.01634790\",\n" +
          "    \"0.80000000\",\n" +
          "    \"0.01575800\",\n" +
          "    \"0.01577100\",\n" +
          "    \"148976.11427815\",\n" +
          "    1499644799999,\n" +
          "    \"2434.19055334\",\n" +
          "    308,\n" +
          "    \"1756.87402397\",\n" +
          "    \"28.46694368\",\n" +
          "    \"17928899.62484339\"\n" +
          "  ]\n" +
          "]\n";
  
  @Test
  public void readKlines() throws JsonProcessingException {
    ObjectMapper objectMapper = JSonHelper.createObjectMapper();
    JsonNode jsonNode = objectMapper.readTree(KLINES);


  }
}

这是一个对象数组,不是有效的 JSON。 order/index 的值总是相同的吗?我的意思是 High 和 Low 总是在索引 2 和 3 处?如果是,则通过循环和填充 POJO 来读取它们。

DozerMapping 很有用。 类似的解决方案here.