Jackson-jr 读取 json 文件并反序列化为 Map<String, MyBean>

问题描述

我有以下 json 文件,我想反序列化为 Bean

{
   "company1": {
     "departmentId": "12","departmentName": "abc"
   },"company2": {
     "departmentId": "34","departmentName": "xyz"
   }
}

Bean - Department.class

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

@Data
@SuperBuilder
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnkNown = true)
public class Department {

    private String departmentId;
    private String departmentName;

}

还有,另一个 Bean - DepartmentConfig.class

import java.util.Map;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

@Data
@SuperBuilder
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnkNown = true)
public class DepartmentConfig {

    private Map<String,Department> departments;
}

我写的代码的目的是读取json文件并翻译成Java Map,以便稍后我可以根据companyId查找departmentId

import com.fasterxml.jackson.jr.ob.JSON;
...

final String configValue = new String(Files.readAllBytes('json_file_path')
Map<String,Department> companyToDepartmentMapping = JSON.std.beanFrom(DepartmentConfig.class,configValue).getDepartments();
...

这不起作用。 companyToDepartmentMapping 值为“null”。但是,如果我的 json 中有关键的“部门”,那么它就可以工作

{
  "departments": {
    "company1": {
      "departmentId": "12","departmentName": "abc"
    },"company2": {
      "departmentId": "34","departmentName": "xyz"
    }
  }
}

我想通过上面的代码实现以下功能

String departmentid = companyToDepartmentMapping.get("company1").getDepartmentId()

我该怎么做?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)