java - 寻找一种解析多类型 JSON 字段的方法

标签 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 中的多类型字段吗?我们使用 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 
                         ]
    }
}

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

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

关于java - 寻找一种解析多类型 JSON 字段的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699621/

相关文章:

将 json 推文转换为 csv 时未定义 Python 名称

python - 如何在 Python 中打印 MongoDB 对象中 Json 内的值

java - String.split() 按两种模式之一

json - Angular $http 服务 - 强制不解析对 JSON 的响应

java - 如何在 C++(JNI) 中设置正在运行的 JVM 的类路径?

java - 使用 json 将数据从 android 发送到 php

java - 使用旧身份验证 token 将用户迁移到新应用程序 - InstallReferrer 自定义参数

java - 设置 GlassFish 服务器

javascript - 如何获取从 Node js(express js 中间件)作为 json 响应发送的 Angular js 中的数据

c# - 访问字符串中的字符与在 C# 中转换为字符数组