将JSON字符串映射到没有嵌套实体的实体

时间:2013-02-19 18:34:13

标签: java json spring-mvc

我正在使用Spring MVC 3,我需要将JSON字符串映射到实体。 Json字符串仅包含嵌套实体的键引用:

我收到一个JSON字符串,如:

{"entities":
    [{
    "entityName":"User",
    "values":
    [
    {"name":"Mario","lastname":"Rossi","id_type":"1"},
    {"name":"Giuseppe","lastname":"Verdi","id_type":"1"}
    ]
    }]
}

我有2个java实体:

User{
   String name,
   String lastname,
   UserType userType
}

UserType {
   int id,
   String description
}

我想使用JSON信息创建我的用户实体。 用户类没有“id_type”参数,因此ObjectMapper不能将JSON字符串放在用户实体中。

我可以接受不同类型的实体,因此我以这种方式使用反射:

//READ JSON
GenericEntity entities[]=request.getEntities();
String entityName = entities[0].getEntityName();
Object rows[] = entities[0].getValues();
//MAP
Class clazz  = Class.forName(entityName);
ObjectMapper mapper = new ObjectMapper();
dbEntity = mapper.convertValue(rows[0], clazz);
//SAVE TO DB
service.save(dbEntity);

我想我必须使用CustomObjectMapper,但我不知道如何

我也有逆转问题: 我得到User类的“用户”,我必须使用“id_type”

创建JSON字符串

有人可以帮助我吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

您可以尝试使用DTO-object。 e.g:

@RequestMapping(value={"/v1/foos"}, method = RequestMethod.POST, consumes="application/json")
public void createFoo(@RequestBody FooDTO requestDTO) throws Exception {
    ...
}

但无论如何都需要进行转换。