从json中提取特定字段并根据特定的Class <! - ? - >对其进行反序列化

时间:2014-06-26 10:06:14

标签: java json jackson mongo-jackson-mapper

我有一段json字符串,我想提取特定字段,并且它存在字段我想将其反序列化为特定类型(Class)。

到目前为止,我已经尝试过使用ObjectMapper,但是它的问题在于它的设计工作方式是将输入json值映射到指定的类类型。在我的例子中,我需要从json字符串中取出特定字段并将它们反序列化为对象。

接下来,我尝试了JsonParser,它提供了更多选项,因为我可以逐个字段地迭代json并且每个字段调用'readValueAs'方法。这对我来说几乎是完美的,我的问题是我不想逐个字段地遍历json,我想动态告诉解析器哪个字段要解析,然后才将它反序列化为一个对象。

以下是我想要实现的一个例子:

说我有这个json { "name" : "Bob", "age" : 21, "status" : false }

我只想提取“name”的值(Bob),然后将其反序列化为 java.lang.String中

我该怎么做?

编辑: 我试着更好地描述我的流程: 当应用程序第一次加载时,我使用反射读取特定方法的参数,稍后当应用程序收到json消息时,我想以一种方式解析消息,即json中的每个键都对应于方法的一个参数。所以我需要将密钥的值从json反序列化为匹配该参数的对象。

如果您知道JAVA-8中的反射机制,您可以获得参数的类型以及它在代码中编写的名称!

希望这更清楚......不确定: - )

1 个答案:

答案 0 :(得分:0)

最后,由于我收到的帮助,我找到了答案!

执行我需要的正确方法是ObjectMapper#convertValue,它接受​​一个对象并返回一个Class类型的对象。它分两步完成:第一步将对象转换为json表示,第二步将其序列化为Class。