找到一种解析多类型JSON字段的方法

时间:2016-08-01 13:01:07

标签: java json parsing jackson

我们有来自服务器的JSON答案,其中我们有字节数组的数组,但也可以是“无”字符串值而不是空数组。例如:

{'jsonrpc': '2.0', 'id': 31, 'result': {"bytes_arrays": [[21,99,165,243,25,210,14,121,120,39,22,102,59],[22,32,42,54,65,65,76,87],None]}

在我的班上,我经常写这样的东西:

@JsonProperty("bytes_arrays")
    private List<byte[]> mArraysList = new ArrayList<>();

但当然,对于带有“None”值的最后一个元素,我们会有一个解析错误,因为它是一个字符串。

有没有办法在这个JSON中提取多类型字段?我们使用杰克逊。

1 个答案:

答案 0 :(得分:1)

JSON字符串末尾有一个缺少的括号。修复并格式化它看起来像这样:

{
    'jsonrpc' : '2.0',
    'id' : 31,
    'result' : {
        "bytes_arrays" : [ 
                           [ 21, 99, 165, 243, 25, 210, 14, 121, 120, 39, 22, 102, 59 ], 
                           [ 22, 32, 42, 54, 65, 65, 76, 87 ], 
                           None 
                         ]
    }
}

Jackson应该能够将其解析为Map<String, Object>

然后,您可以使用Object检查instanceof的类型,并将您的逻辑放在一起。