首页 > 解决方案 > 如何将 Json(来自过程)映射到 Java 对象

问题描述

我有以下返回 Json 输出的 SP(SQL 服务器)。

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 将返回的 Json 输出映射到 ProgramDto 列表。不确定这样做很热,因为 call.execute 的返回值是一个对象。

像这样的东西:

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 );
}

谢谢

标签: javajsonspring-bootmodelmapper

解决方案


据我了解,您正在尝试从您可以使用Jackson api获取对象列表

像这样

比如说你的 json 在名为 jsonData 的变量中,那么你可以得到你需要的对象,如下所示。

ObjectMapper mapper = new ObjectMapper();
List<Type> myList = Arrays.asList(mapper.readValue(jsonData, Type[].class));

您还可以在此处找到更多示例


推荐阅读