将 JSON 对象映射到通用 Map 对象
Mapping JSON Object to generic Map object
我当前的用例涉及接收一个 JSON 对象作为 post 请求的一部分,它可能类似于:
{"employer": 1, "employee": 15}
根据这些,我想创建一个 "contract" 对象,将我的雇主与我的雇员联系起来。
目前,我需要类似
的东西
@POST
public Contract createContract(ContractRequest cr) {
Employee employee = employeeDao.getEmployeeFromId(cr.getEmployeeId());
Employer employer = employerDao.getEmployerFromId(cr.getEmployerId());
Contract c = new Contract();
c.setEmployer(employer);
c.setEmployee(employee);
return c;
}
它有几个缺点:我需要定义一个 ContractRequest class,其唯一目的是捕获 id,然后将其传递给 employee/employer daos。
是否可以将 json 映射到通用 java 映射对象,而不必为其显式定义 class?
你可以使用杰克逊:
HashMap<String,Object> result = new ObjectMapper().readValue(string, HashMap.class);
或 GSON:
String employer = root.getAsJsonObject().get("employer").getAsString();
我当前的用例涉及接收一个 JSON 对象作为 post 请求的一部分,它可能类似于:
{"employer": 1, "employee": 15}
根据这些,我想创建一个 "contract" 对象,将我的雇主与我的雇员联系起来。
目前,我需要类似
的东西@POST
public Contract createContract(ContractRequest cr) {
Employee employee = employeeDao.getEmployeeFromId(cr.getEmployeeId());
Employer employer = employerDao.getEmployerFromId(cr.getEmployerId());
Contract c = new Contract();
c.setEmployer(employer);
c.setEmployee(employee);
return c;
}
它有几个缺点:我需要定义一个 ContractRequest class,其唯一目的是捕获 id,然后将其传递给 employee/employer daos。
是否可以将 json 映射到通用 java 映射对象,而不必为其显式定义 class?
你可以使用杰克逊:
HashMap<String,Object> result = new ObjectMapper().readValue(string, HashMap.class);
或 GSON:
String employer = root.getAsJsonObject().get("employer").getAsString();