Hello Felix, I had based the starting code off a web blog post on JMeter JSON with javascript and it used eval technique. I did consider swapping to JSON.parse() later after sending out the email to JMeter mailing list. I just switched over now for cleaner code. It didn't help though.
Found no relevant info/errors in the jmeter.log file. I did put a try/catch around the problem and dumped the result to a variable to display with the debug sampler. It returned this particular error that isn't very helpful: InternalError: Java class "[B" has no public instance field or method named "toJSON". I wonder if "[B" stood for JMeter regex extractor result variable SOMEITEMID since the original variable name started with a B. I just renamed it when sending the email. Plus when I don't include this variable's value into the JSON object, there is no error caught (works fine). Other than that, the error is a bit cryptic on the specifics of which Java class. David On Tue, Nov 25, 2014 at 1:01 AM, Felix Schumacher < [email protected]> wrote: > Hello David, > > Am 25.11.2014 04:57, schrieb David Luu: > >> I was wondering if anyone has dealt with JSON data and the need to >> stringify it at some point and doing this in JMeter, say with BSF sampler >> for javascript? >> >> Any tips on that would be appreciated. >> >> I gave it a try and noticed that JMeter, at least as of version 2.9 >> r1437961 that I'm using, seems to support JSON.stringify(), or using it >> doesn't cause any errors. >> >> However, in one situation, it fails to work. I can't share the full test >> plan but here's a snippet around the issue: >> >> //after HTTP sampler, we process JSON response in BSF post processor in >> javascript >> eval('var jsonResponse = ' + prev.getResponseDataAsString()); >> > if you are using the JSON object (below with stringify) anyway, why not use > var jsonResponse = JSON.parse(prev.getResponseDataAsString()); > instead of eval(...)? > > jsonResponse.cacheOnly = false; >> jsonResponse.someItemId = vars.get("SOMEITEMID"); >> //...some other stuff dealing with updating JSON object member values >> vars.put("testVar", jsonResponse.someItemId); >> vars.put("JSON_OBJ_AS_STR", JSON.stringify(jsonResponse)); >> >> I'm reusing JSON_OBJ_AS_STR or can be a new JMeter variable. >> >> If I set JSON object member someItemId, then the stringify fails (without >> any complain from JMeter other than test failure at some point). Using >> > Have you looked in jmeter.log? > > debug sampler after this, I notice that JSON_OBJ_AS_STR isn't updated as >> expected (using old value) or the new variable isn't defined/set, although >> testVar is defined correctly. If I omit defining new member "someItemId" >> and setting it's value, then the stringify works fine. But I need both >> things together. >> > You could try to enclose the javascript code in a try/catch block and log > the possibly catched exceptions. > > HTH > Felix > >> >> SOMEITEMID is actually a JMeter variable set by a Regular Expression >> Extractor that is set to match a single match group in parenthesis in the >> regex. >> >> SOMEITEMID =14179242 >> SOMEITEMID_g=1 >> SOMEITEMID_g0=someText someMoreText" id="14179242" >> SOMEITEMID_g1=14179242 >> >> I also tried using SOMEITEMID_g1 instead of base variable, didn't make a >> difference. >> >> Is the problem to do with regular expression matched variable and >> JSON.stringify used together? >> >> I guess I could look for alternate javascript solution, or worst case swap >> to try doing it in Java like >> >> http://theworkaholic.blogspot.com/2012/05/json-in-jmeter.html >> >> it's just that javascript is simpler to deal with if I can. I don't >> suppose >> a newer version of Jmeter fixes this issue... >> >> I could look into JSONPath related route, but as I'm dealing with multiple >> updates to JSON object data, it seems easier to do in code whether >> javascript, Java, etc. >> >> Thanks for reading. Any feedback appreciated, >> David >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
