当前位置: 首页 > 知识库问答 >
问题:

Groovy在创建动态json时没有这样的属性错误

周洋
2023-03-14
def builder = new groovy.json.JsonBuilder()

@groovy.transform.Immutable
class Items {
    String Id
    String Name
}

def items = new File("Item.txt").readLines().collect { line -> new Items(line.split(",")[0], line.split(",")[1]) }
builder.Rule(

        __type: "DataCollectionRule",
        DeviceFamily: '${__P(DeviceFamily)}',
        RuleId: 0,
        Name: 'test-${__time(yyyy-MM-dd'T'hh:mm:ss)}-${__counter(TRUE,)}',
        Targets:
                [
                        Groups :
                                [
                                        [
                                                Id: '${logicalid1_1}',
                                        ]
                                ],
                        Devices:
                                [

                                ]
                ],
        StartDate: '/Date(${__time(,)})/',        
        IsEnabled: true,
        Priority: 0,
        AlertType: 0,
        DeliverySchedule:
                [
                                                Id         :   1,
                                                Name       :  "Every 30 Minutes",
                                                Period     :  "30M"

                ],
        CollectionSchedule:                      
               [
                                              Id         :   1,
                                                Name       :  "Every 30 Minutes",
                                                Period     :  "30M"
              ],                    
        Items  : items.collect() [
        [

                                                Id         : it.Id,
                                                Name       : it.Name                                                

        ]
                ],
        LocationAccuracy:
                [
                                                UseGPS     :  false,
                                       DistanceInMeters : 100,
                                       ReportToServer  : true,
                                       AccuracyInMeters : 10
             ],
          HasDolphinCounters: false,
          EnrollmentCertificateId: null,
          EnrollmentCertificateName: "",
        DatabaseHighWatermark: 28,
        DatabaseLowWatermark: 14,
        DeviceHighWatermark: 400,
        DeviceLowWatermark:  200

)

sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', builder.toPrettyString(), '')
sampler.setPostBodyRaw(true);

日志消息如下所示:

2018-09-24 13:49:23,669错误O.A.J.M.JSR223预处理器:JSR223脚本中的问题,JSR223预处理器javax.script.scriptexception:groovy.lang.missingPropertyException:没有这样的属性:用于类的it:Script32 at org.codehaus.groovy.JSR223.groovyScriptEngineimpl.eval(GroovyScriptEngineimpl.java:320)~[groovy-all-2.4.13.jar:2.4.13]at org.codehaus.groovy.JSR223.groovyCompiledScript.eval(GroovyCompiledScript.java:72)~[groovy-all-2.4.13.jar:2.4.13].13]位于javax.script.compiledscript.eval(来源未知)~[?:1.8.0_151]位于org.apache.jmeter.util.jsr223TestElement.processfileorScript(jsr223TestElement.java:221)~[apacheJMeter_core.jar:4.0r1823414]位于org.apache.jmeter.modifiers.jsr223preprocess.process(jsr223preprocess.process(jsr223preprocesser.java:44)[apacheJMeter_components.jar:4.0r1823414]位于meter_core.jar:4.0r1823414]在org.apache.jmeter.threads.jmeterThread.executesAmplePackage(jmeterThread.java:467)[apacheJMeter_core.jar:4.0r1823414]在org.apache.jmeter.threads.jmeterThread.processSampler(jmeterThread.java:416)[apacheJMeter_core.jar:4.0r1823414]在org.apache.jmeter.threads.jmeterThread.run(jmeterThread.jmeterThread.run(jmeterThread.java:250)[apacheJMeter_core.jar:4.0r1823414]在java.lang.thread.run(未知源)[?:1.8.0_151]由:groovy.lang.thread.run(未知源)引起:groovy.lang.missingPropertyException:没有这样的属性:OdeAdapter.unwrap(scriptByteCodeAdapter.java:53)~[groovy-all-2.4.13.jar:2.4.13]在org.codehaus.groovy.runtime.callsite.pogoGetPropertySite.getProperty(SpogoGetPropertySite.java:52)~[groovy-all-2.4.13.jar:2.4.13]在org.codehaus.groovy.runtime.callsite.abstractCallsite.abstractCallsite.callgroovy:2.4.13]在org.codehaus.java:307)~[groovy-all-2.4.13.jar:2.4.13]在Script32.run jsr223.groovyscriptengineimpl.eval(Groovyscriptengineimpl.java:317)~[groovy-all-2.4.13.jar:2.4.13]...9

CSV如下:

   -1,BatteryStatus
    -3,AvailableMemory
    -5,AvailableStorage

提前谢谢你

共有1个答案

上官联
2023-03-14

这里必须使用{}作为闭包:

items.collect() { // wrong: [
    // ...
} // wrong: ]

或者只是项。收集{...}

使用[],编译器将看到它作为一个映射文本,并得到上面的错误(It未定义)

 类似资料:
  • 试图通过解析JSON提取response属性时,收到NoSuchProperty错误

  • 我有一个Groovy测试类 在该类中有以下测试用例: 以及如下所示: 现在,当我运行这个测试用例时,我在调用时收到以下错误消息: 棒极了。lang.MissingPropertyException:类:ecs没有此类属性:msg1。MsgDispatcherTest 你知道我错过了什么吗?

  • 本文向大家介绍js中动态创建json,动态为json添加属性、属性值的实例,包括了js中动态创建json,动态为json添加属性、属性值的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 在js中,一个[]认为是数组;{}认为是Json对象; var json = {}; 定义一个Json对象; 为Json对象赋值: json[aa] = "xx"; eval 解析json报错 提示缺少“

  • 我需要一些帮助,我在jenkins上启动了一个构建,我得到以下错误: 从fbc5e195a176b64d916adf6430669734a80cb9bc获得的Jenkinsfile在耐久性级别下运行:最大生存能力[Pipeline]管道末端groovy。lang.MissingPropertyException:类:groovy没有这样的属性:节点。在groovy绑定。朗朗,装订。org上的get

  • 问题内容: 给定一个类名,我想动态创建一个Groovy类,向其添加属性和方法。我使用创建新类 对于我使用的方法 其中it.key是字符串(方法名),it.value是闭包。这很方便,因为我可以指定方法参数类型并进行类型检查。但是,如果不给它赋值,就无法指定动态创建的属性类型。我可以通过显式定义属性的getter和setter来解决此问题。这可行,但是metaClass.name = value或m