java - 如何将 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 );
}
谢谢
解决方案
据我了解,您正在尝试从您可以使用Jackson api获取对象列表
像这样
比如说你的 json 在名为 jsonData 的变量中,那么你可以得到你需要的对象,如下所示。
ObjectMapper mapper = new ObjectMapper();
List<Type> myList = Arrays.asList(mapper.readValue(jsonData, Type[].class));
您还可以在此处找到更多示例
推荐阅读
- ada - SPARK-Ada 使用 GNATProve 假设 GCC 内在函数的后置条件
- android - 在 Firestore 中尝试 whereIn 子句时获取 StackOverflow 异常
- html - 引导汉堡菜单不折叠
- c# - 处理外键表值的临时创建
- css - 使用 CSS rotateX() 的多个旋转方向
- python - Python证书验证失败
- javascript - 尝试在 node.js 中获取网站 API 内容
- linux - Ubuntu 中的 memusage 命令在哪里?
- javascript - Javascript数组格式
- sugarcrm - 如何在 SugarCRM 逻辑挂钩中获取当前平台(基础/移动)?