Jackson将json字符串转换成泛型List

本文介绍了一个将JSON格式的字符串转换为List类型的Java实现案例。该案例通过使用ObjectMapper解析JSON字符串,并将其转换为DoctorInformation对象的列表。文章展示了具体的代码实现,包括如何处理异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

情景:

需求,需要做一个接口,请求体中的参数是string类型。

参数是一个批量的数据,json数组格式,所以需要把string的参数转换成list类型。

参数如下:

[
{
"doctorCode": "0210000",
"hospitalName": "上海市第一人民医院",
"hospitalLevel": "三级甲等",
"hospitalProvince": "上海市",
"firstLevelDepartment": "临床科室",
"secondLevelDepartment": "急诊科",
"doctorName": "张三",
"doctorGender": "男",
"doctorProfessionalTitle": "一级医师",
"doctorCertificateNumber": "111000",
"verificationResult": "0",
"verificationTime": "2017/11/29",
"status": "0",
"remarks1": "备注1",
"remarks2": "备注2",
"remarks3": "备注3"
},
{
"doctorCode": "0210001",
"hospitalName": "上海市第二人民医院",
"hospitalLevel": "三级甲等",
"hospitalProvince": "上海市",
"firstLevelDepartment": "临床科室",
"secondLevelDepartment": "急诊科",
"doctorName": "李四",
"doctorGender": "男",
"doctorProfessionalTitle": "二级医师",
"doctorCertificateNumber": "111001",
"verificationResult": "0",
"verificationTime": "2017/12/4",
"status": "0",
"remarks1": "备注1",
"remarks2": "备注2",
"remarks3": "备注3"
},
{
"doctorCode": "0210001",
"hospitalName": "上海市第二人民医院",
"hospitalLevel": "三级甲等",
"hospitalProvince": "上海市",
"firstLevelDepartment": "临床科室",
"secondLevelDepartment": "急诊科",
"doctorName": "王五",
"doctorGender": "男",
"doctorProfessionalTitle": "二级医师",
"doctorCertificateNumber": "111001",
"verificationResult": "0",
"verificationTime": "2017/12/4",
"status": "0",
"remarks1": "备注1",
"remarks2": "备注2",
"remarks3": "备注3"
},
{
"doctorCode": "0210001",
"hospitalName": "上海市第二人民医院",
"hospitalLevel": "三级甲等",
"hospitalProvince": "上海市",
"firstLevelDepartment": "临床科室",
"secondLevelDepartment": "急诊科",
"doctorName": "赵六",
"doctorGender": "男",
"doctorProfessionalTitle": "二级医师",
"doctorCertificateNumber": "111001",
"verificationResult": "0",
"verificationTime": "2017/12/4",
"status": "0",
"remarks1": "备注1",
"remarks2": "备注2",
"remarks3": "备注3"
}
]

=============================================================================

@RequestMapping(method={RequestMethod.POST}, value="/doctorss")
@ResponseBody
public int testDoctorInformation(@RequestBody String doctor) throws Exception{
logger.debug(DEBUG_PREFIX+"updateDoctorInformation begin,the doctor is:" + doctor);
logger.info(INFO_PREFIX+"updateDoctorInformation begin.");

int resultCode=1;
try {
ObjectMapper objMapper = new ObjectMapper();
JavaType javaType = getCollectionType(ArrayList.class, DoctorInformation.class);
List<DoctorInformation> list = (List<DoctorInformation>)objMapper.readValue(doctor,javaType );
for(DoctorInformation ll:list){
System.out.println(ll.getDoctorName());
}

logger.debug(DEBUG_PREFIX+"updateDoctorInformation end.");
logger.info(INFO_PREFIX+"updateDoctorInformation end");
} catch (Exception e) {
logger.error(ERROR_PREFIX+"execute updateDoctorInformation occur error,the exception is:"+e);
logger.error("系统异常", e);
resultCode=0;
throw e;
}
return resultCode;
}

public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
ObjectMapper mapper = new ObjectMapper();
return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值