Jmeter JDBC 请求中有没有办法将 "result variable" 数据转换为 Json 格式?
Is there a way in Jmeter JDBC request to convert "result variable" data into Json format?
我正在将 Jmeter JDBC REquest 数据存储在结果变量中,结果变量的格式如下:
[[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 错误 o.a.j.JMeter:线程 Thread[dc Service 1-1,6,main] 中未捕获的异常
java.lang.WhosebugError:空
在 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]
在 java.lang.ClassLoader.loadClass(未知来源)~[?:1.8.0_111]
在 sun.misc.Launcher$AppClassLoader.loadClass(未知来源)~[?:1.8.0_111]
在 java.lang.ClassLoader.loadClass(未知来源)~[?:1.8.0_111]
在 java.lang.ClassLoader.loadClass(未知来源)~[?:1.8.0_111]
在 java.lang.Class.forName0(本机方法)~[?:1.8.0_111]
在 java.lang.Class.forName(未知来源)~[?:1.8.0_111]
在 groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createWithCustomLookup(MetaClassRegistry.java:144) ~[groovy-3.0.7.jar:3.0.7]
在 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]
..............
任何克服此问题的指示都会有所帮助。谢谢
对我来说,下面的代码片段工作得很好:
def resl = vars.getObject('jdbc_dcRes')
def json = new groovy.json.JsonBuilder(resl).toPrettyString()
log.info('Jdbc result Converted into Json :' + json)
演示:
我使用的是普通 MySQL database 8.0.28 和以下查询:
select * from help_category limit 2
所以您可能想尝试复制上面的内容,如果它会成功 - 最有可能的问题是您的数据库中的数据无法使用 Groovy' 转换为 JSON' s JsonBuilder 没有额外的转换(即你有不能一对一映射到 JSON 数据类型的特定数据类型)
请参阅 Debugging JDBC Sampler Results in JMeter 了解更多关于 JMeter 的 JDBC 请求采样器
中称为“结果变量名称”的野兽的剖析
我正在将 Jmeter JDBC REquest 数据存储在结果变量中,结果变量的格式如下: [[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 错误 o.a.j.JMeter:线程 Thread[dc Service 1-1,6,main] 中未捕获的异常 java.lang.WhosebugError:空 在 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] 在 java.lang.ClassLoader.loadClass(未知来源)~[?:1.8.0_111] 在 sun.misc.Launcher$AppClassLoader.loadClass(未知来源)~[?:1.8.0_111] 在 java.lang.ClassLoader.loadClass(未知来源)~[?:1.8.0_111] 在 java.lang.ClassLoader.loadClass(未知来源)~[?:1.8.0_111] 在 java.lang.Class.forName0(本机方法)~[?:1.8.0_111] 在 java.lang.Class.forName(未知来源)~[?:1.8.0_111] 在 groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createWithCustomLookup(MetaClassRegistry.java:144) ~[groovy-3.0.7.jar:3.0.7] 在 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]
..............
任何克服此问题的指示都会有所帮助。谢谢
对我来说,下面的代码片段工作得很好:
def resl = vars.getObject('jdbc_dcRes')
def json = new groovy.json.JsonBuilder(resl).toPrettyString()
log.info('Jdbc result Converted into Json :' + json)
演示:
我使用的是普通 MySQL database 8.0.28 和以下查询:
select * from help_category limit 2
所以您可能想尝试复制上面的内容,如果它会成功 - 最有可能的问题是您的数据库中的数据无法使用 Groovy' 转换为 JSON' s JsonBuilder 没有额外的转换(即你有不能一对一映射到 JSON 数据类型的特定数据类型)
请参阅 Debugging JDBC Sampler Results in JMeter 了解更多关于 JMeter 的 JDBC 请求采样器
中称为“结果变量名称”的野兽的剖析