title: Groovy No such property error while creating dynamic json
body: <p>I am trying to create a dynamic json using csv data in jmeter with JSR223 PreProcessor </p>
  
  <p>Below is the code for the same I am using CSV for data for Id and Name:</p>
  
  <pre><code>def builder = new groovy.json.JsonBuilder()
  
  @groovy.transform.Immutable
  class Items {
      String Id
      String Name
  }
  
  def items = new File("Item.txt").readLines().collect { line -&gt; 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);
  </code></pre>
  
  <p>While running the test I am getting HTTP 400 with Bad Request </p>
  
  <p>Log message is as shown below:</p>
  
  <p>2018-09-24 13:49:23,669 ERROR o.a.j.m.JSR223PreProcessor: Problem in JSR223 script, JSR223 PreProcessor
  javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: it for class: 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]
      at javax.script.CompiledScript.eval(Unknown Source) ~[?:1.8.0_151]
      at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:221) ~[ApacheJMeter_core.jar:4.0 r1823414]
      at org.apache.jmeter.modifiers.JSR223PreProcessor.process(JSR223PreProcessor.java:44) [ApacheJMeter_components.jar:4.0 r1823414]
      at org.apache.jmeter.threads.JMeterThread.runPreProcessors(JMeterThread.java:849) [ApacheJMeter_core.jar:4.0 r1823414]
      at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:467) [ApacheJMeter_core.jar:4.0 r1823414]
      at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:416) [ApacheJMeter_core.jar:4.0 r1823414]
      at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:250) [ApacheJMeter_core.jar:4.0 r1823414]
      at java.lang.Thread.run(Unknown Source) [?:1.8.0_151]
  Caused by: groovy.lang.MissingPropertyException: No such property: it for class: Script32
      at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53) ~[groovy-all-2.4.13.jar:2.4.13]
      at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52) ~[groovy-all-2.4.13.jar:2.4.13]
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307) ~[groovy-all-2.4.13.jar:2.4.13]
      at Script32.run(Script32.groovy:46) ~[?:?]
      at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317) ~[groovy-all-2.4.13.jar:2.4.13]
      ... 9 more</p>
  
  <p>CSV is as follows :</p>
  
  <pre><code>   -1,BatteryStatus
      -3,AvailableMemory
      -5,AvailableStorage
  </code></pre>
  
  <p>Thank you in advance</p>