Json,Jackson:一个字段的多态性,基于其他字段的值



基本上,我正在尝试与其他一些发送具有以下形状的有效载荷的服务集成

{
"storeId":"123",
"type": "...",
"data": ...,
"createdAt": "...."
}

除了属性data之外,该形状从未改变,其结构取决于属性type

杰克逊怎么能做到这一点?

  1. 使用JsonNode将字符串节点转换为json节点JsonNode node = mapper.valueToTree(fromValue);
  2. 然后使用JsonNode dataNode = node.get("data")获取节点,类型相同
  3. 使用Class yourBeanClass = Class.forName("package.+type from step 2");从类型节点获取类
  4. 使用JsonParser parser = mapper.treeAsTokens(dataNode);标记数据节点
  5. 最后通过执行YourBean bean = mapper.readValue(parser, yourBeanClass);获得您的bean实例

最新更新