java - 反序列化 Jackson 动态键值

标签 java spring-boot jackson

我有一个与此类似的 json 结构

{
  "Byc-yes": { // < code
    "Updated": "week", // < period
    "Time": "12pm" // < time
  },
  "Uop-thp":{
    "Updated": "week",
    "Time": "12pm
  } ,
  ...

我想将其反序列化为 Java 类

class Updating {
   private String code;
   private String period;
   private String time;
}

有任何 native JACKSON 映射器可以执行此操作,还是我需要为此创建自己的自定义解串器?

最佳答案

我会将其读取为 Map.class,然后迭代键集以提取值。

ObjectMapper objectMapper = new ObjectMapper();
    Map map = objectMapper.readValue(s, Map.class);
    for (Object o : map.keySet()) {
        String key = (String) o;
        System.out.println(key);//prints Byc-yes for first
        Map<String, String> value = (Map<String, String>) map.get(key);
        System.out.println(value); //prints {Updated=week, Time=12pm} for first
        Updating updating = new Updating(key, value.get("Updated"), value.get("Time"));
        System.out.println(updating);
    }

假设 UpdatedTime 是固定键。

关于java - 反序列化 Jackson 动态键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45095181/

相关文章:

java - 使用 TiledMap 的 Libgdx 碰撞检测

spring-boot - 我的 spring-boot mvc 应用程序总是通过显示关闭

java - 在 GSON/Jackson 中以不同的方式序列化同一类的每个引用

java - Spring 启动配置。集合 Autowiring - 成功 Autowiring 后获得意想不到的值(value)

java - 在 Spring Boot 和 ElasticSearch 中使用 Instant、LocalDateTime 和 ZonedDateTime

java - 使用 Jackson 与 JSON 进行交互,其中每个类都实现相同的接口(interface)

java - 错误:调用需要API级别23(当前最小值为15):

java - 为什么在持久化 JoinTable 对象时我的 OneToMany 列表没有填充?

java - Java 元音和辅音

java - 使用 Spring-Boot 和 Jetty 设置 SSL