0

我将 Jmeter JDBC 请求数据存储在结果变量中,其格式如下:[[alt_id:535644, cd:A, cube:1.000, stat_dt:null, ts:9999-12-31T00:01]]

我尝试了以下将其转换为 JSON 但不成功:

def resl = vars.getObject('jdbc_dcRes');
log.info("Jdbc result : " + resl);
def json = new groovy.json.JsonBuilder(resl).toPreetyString();
OR
def json = new groovy.json.JsonBuilder(resl).toString();
log.info("Jdbc result Converted into Json : " + json);

获取:2022-02-11 15:31:51,971 错误 oajJMeter:线程线程中未捕获的异常 [dc 服务 1-1,6,main] java.lang.StackOverflowError: null at java.util.concurrent.ConcurrentHashMap.putVal(未知来源)〜[?:1.8.0_111]在java.util.concurrent.ConcurrentHashMap.putIfAbsent(未知来源)〜[?:1.8.0_111]在java.lang.ClassLoader.getClassLoadingLock(未知来源)〜[?:1.8。 0_111] at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_111] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[?:1.8.0_111] at java.lang.ClassLoader .loadClass(Unknown Source) ~[?:1.8.0_111] at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_111] at java.lang.Class.forName0(Native Method) ~[?: 1.8.0_111] 在 java.lang.Class.forName(Unknown Source) ~[?:1.8.0_111] 在 groovy.lang.MetaClassRegistry$MetaClassCreationHandle。createWithCustomLookup(MetaClassRegistry.java:144) ~[groovy-3.0.7.jar:3.0.7] at groovy.lang.MetaClassRegistry$MetaClassCreationHandle.create(MetaClassRegistry.java:139) ~[groovy-3.0.7.jar:3.0 .7] 在 org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:272) ~[groovy-3.0.7.jar:3.0.7]

......

任何克服这一点的指针都会有所帮助。谢谢

4

1 回答 1

0

对我来说,下面的代码片段工作得很好:

def resl = vars.getObject('jdbc_dcRes')

def json = new groovy.json.JsonBuilder(resl).toPrettyString()

log.info('Jdbc result Converted into Json :' + json)

演示:

在此处输入图像描述

我正在使用普通的MySQL 数据库8.0.28 和以下查询:

select * from help_category limit 2

因此,您可能想尝试复制上述内容,如果它会成功 - 很可能问题出在您的数据库中的数据无法使用 Groovy 的JsonBuilder转换为 JSON而无需额外的转换(即,您有特定的数据类型不能一对一映射到 JSON 数据类型)

请参阅在 JMeter 中调试 JDBC 采样器结果以了解有关 JMeter 的 JDBC 请求采样器中名为“结果变量名称”的野兽的更多信息

于 2022-02-11T11:07:04.493 回答