我正在使用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字符串有人可以帮助我吗? 提前致谢
答案 0 :(得分:0)
您可以尝试使用DTO-object。 e.g:
@RequestMapping(value={"/v1/foos"}, method = RequestMethod.POST, consumes="application/json")
public void createFoo(@RequestBody FooDTO requestDTO) throws Exception {
...
}
但无论如何都需要进行转换。