java.lang.UnsupportedOperationException: null 其一解决办法

发布时间:2024年01月16日


前言

当我们远程调用传递泛型集合,如 List<?> 时,在我们使用 JSON 将字符串转为 List 时,即:JSON.parseArray(“字符串”).toJavaList(Clazz); 有时会报:java.lang.UnsupportedOperationException: null 错误。


提示:以下是本篇文章正文内容,下面案例可供参考

一、错误回顾

1.详细信息

java.lang.UnsupportedOperationException: null
	at com.alibaba.fastjson2.reader.ObjectReaderBaseModule$PrimitiveImpl.createInstance(ObjectReaderBaseModule.java:978) ~[fastjson2-2.0.0.jar:na]
	at com.alibaba.fastjson2.reader.ObjectReader.createInstance(ObjectReader.java:53) ~[fastjson2-2.0.0.jar:na]
	at com.alibaba.fastjson2.util.TypeUtils.cast(TypeUtils.java:167) ~[fastjson2-2.0.0.jar:na]
	at com.alibaba.fastjson2.reader.ObjectReader.createInstance(ObjectReader.java:74) ~[fastjson2-2.0.0.jar:na]
	at com.alibaba.fastjson.JSONArray.toJavaList(JSONArray.java:207) ~[fastjson-2.0.0.jar:na]
	at com.sty.topology.web.service.impl.TopologyTreeServiceImpl.olmMonitor(TopologyTreeServiceImpl.java:700) ~[classes/:na]
	at com.sty.topology.web.service.impl.TopologyTreeServiceImpl$$FastClassBySpringCGLIB$$6ec93c49.invoke(<generated>) ~[classes/:na]

2.代码详情

报错代码显示为:toJavaList(LightPath.class); 错误

List<LightPath> lightPaths = JSON.parseArray(JSON.toJSONString(object)).toJavaList(LightPath.class);

二、解决方案

1.错误原因

主要是我们返回的 list 中,含有 $ref 返回的数据,导致json解析不出来。

在这里插入图片描述

2.解决方案

1.使用 new ObjectMapper() + new TypeReference(){}

List<LightPath> lightPaths = new ObjectMapper().convertValue(object, 
					new TypeReference<List<LightPath>>() {});

2.使用 SerializerFeature.WriteMapNullValue.getMask()

List<LightPath> lightPaths = JSON.parseArray(JSON.toJSONString(object, 
					SerializerFeature.WriteMapNullValue.getMask())).toJavaList(LightPath.class);

JSON.toJSONString(jsonObject),出现 “$ref“ 解决方案


总结

该是你的总归是你的,不是你的也强求不来。

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_60713320/article/details/135414216
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。