如何读取未命名的 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.
当使用 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.