如何将 Json(从过程)映射到 Java 对象
How to map Json (from procedure) to Java object
我有以下 SP(SQL 服务器)return 一个 Json 输出。
BEGIN
SET @jsonOutput = (
SELECT
Program.Name AS ProgramName,
ProgramOwner.FirstName AS OwnerFirstName,
FROM ProgramOwner, Program
WHERE Program.Id = ProgramOwner.ProgramOwner2Program
FOR JSON PATH,WITHOUT_ARRAY_WRAPPER)
我想通过 modelMapper 将 return Json 输出映射到 ProgramDto 列表。不确定这样做很热,因为 call.execute 中的 return 值是一个对象。
像这样:
SimpleJdbcCall call = new
SimpleJdbcCall(jdbcTemplate).withProcedureName(programProc).declareParameters(
new SqlOutParameter("jsonOutput", Types.VARCHAR));
Map<String,Object>out = call.execute(new MapSqlParameterSource());
if(out.size()>0) {
// Only to show what I am trying to do
Type rootType = new TypeToken<List<ProgramDto>>() {}.getType();
modelMapper.map(out.get("jsonOutput"),rootType );
}
谢谢
据我所知,您正在尝试从
您可以使用 Jackson api
像这样
比如说你的 json 在名为 jsonData 的变量中,那么你可以像下面这样得到你需要的对象。
ObjectMapper mapper = new ObjectMapper();
List<Type> myList = Arrays.asList(mapper.readValue(jsonData, Type[].class));
您还可以找到更多示例here
我有以下 SP(SQL 服务器)return 一个 Json 输出。
BEGIN
SET @jsonOutput = (
SELECT
Program.Name AS ProgramName,
ProgramOwner.FirstName AS OwnerFirstName,
FROM ProgramOwner, Program
WHERE Program.Id = ProgramOwner.ProgramOwner2Program
FOR JSON PATH,WITHOUT_ARRAY_WRAPPER)
我想通过 modelMapper 将 return Json 输出映射到 ProgramDto 列表。不确定这样做很热,因为 call.execute 中的 return 值是一个对象。
像这样:
SimpleJdbcCall call = new
SimpleJdbcCall(jdbcTemplate).withProcedureName(programProc).declareParameters(
new SqlOutParameter("jsonOutput", Types.VARCHAR));
Map<String,Object>out = call.execute(new MapSqlParameterSource());
if(out.size()>0) {
// Only to show what I am trying to do
Type rootType = new TypeToken<List<ProgramDto>>() {}.getType();
modelMapper.map(out.get("jsonOutput"),rootType );
}
谢谢
据我所知,您正在尝试从 您可以使用 Jackson api
像这样
比如说你的 json 在名为 jsonData 的变量中,那么你可以像下面这样得到你需要的对象。
ObjectMapper mapper = new ObjectMapper();
List<Type> myList = Arrays.asList(mapper.readValue(jsonData, Type[].class));
您还可以找到更多示例here