lujiatao2 / mock

Mock是一个零侵入的服务端Mock平台,底层基于JVM Sandbox。相比于Fiddler、Charles和Burp Suite等客户端的代理调试工具,Mock的优势在于可以对调用链中的任何服务节点数据进行Mock,而不只是Mock离客户端最近一个节点的数据。
MIT License
14 stars 8 forks source link

请教类型转换的问题 #4

Open yyyfind opened 4 months ago

yyyfind commented 4 months ago

mock-example-APP中接口返回的是List类型,实际mock规则配置的返回数据是string类型。我看private Object stringToObject(String string, Class<?> aClass) 方法中支持的转换类型是string、Byte、Short、Integer这种基本类型,请问是怎么转换成List类型的? 应该只有转换成List类型,被mock的程序才不会报错吧?

lujiatao2 commented 4 months ago

mock-example-APP中接口返回的是List类型,实际mock规则配置的返回数据是string类型。我看private Object stringToObject(String string, Class<?> aClass) 方法中支持的转换类型是string、Byte、Short、Integer这种基本类型,请问是怎么转换成List类型的? 应该只有转换成List类型,被mock的程序才不会报错吧?

returnOrThrow方法里会先判断是否是JSON列表。

yyyfind commented 4 months ago

我看到如果是JSON的,会用Object object = JSON.parseObject(returnOrThrowData, advice.getReturnObj().getClass());转换,我也用这个方法转换,最后被mock的系统就会报错两个类加载器不一致,parseObject和我实际要转换的类加载器不一致,这种有办法解决吗? class com.alibaba.fastjson2.JSONObject cannot be cast to class xxxxx.adapter.dto.SeamlessResDTO (com.alibaba.fastjson2.JSONObject is in unnamed module of loader com.alibaba.jvm.sandbox.core.classloader.ModuleJarClassLoader @e72d75b; xxxxxx.adapter.dto.SeamlessResDTO is in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @31aa9b01)