Как сопоставить Json (из процедуры) с Java объектом - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть следующий SP (SQL сервер), который возвращает вывод 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)

Я хотел бы отобразить вывод возврата Json в Список ProgramDto через modelMapper. Не обязательно делать это, так как возвращаемые значения из call.execute - это Object.

Примерно так:

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

Спасибо

1 Ответ

0 голосов
/ 22 февраля 2020

Как я понял, вы пытаетесь получить список объектов от. Вы можете использовать Джексон API

Как это

скажем, например, ваш json находится в переменная с именем jsonData, тогда вы можете получить нужный вам объект, как показано ниже.

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

Вы также можете найти больше примеров здесь

...