当我们远程调用传递泛型集合,如 List<?> 时,在我们使用 JSON 将字符串转为 List 时,即:JSON.parseArray(“字符串”).toJavaList(Clazz); 有时会报:java.lang.UnsupportedOperationException: null 错误。
提示:以下是本篇文章正文内容,下面案例可供参考
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]
报错代码显示为:toJavaList(LightPath.class); 错误
List<LightPath> lightPaths = JSON.parseArray(JSON.toJSONString(object)).toJavaList(LightPath.class);
主要是我们返回的 list 中,含有 $ref 返回的数据,导致json解析不出来。
List<LightPath> lightPaths = new ObjectMapper().convertValue(object,
new TypeReference<List<LightPath>>() {});
List<LightPath> lightPaths = JSON.parseArray(JSON.toJSONString(object,
SerializerFeature.WriteMapNullValue.getMask())).toJavaList(LightPath.class);
JSON.toJSONString(jsonObject),出现 “$ref“ 解决方案
该是你的总归是你的,不是你的也强求不来。