向Beanshell传递Java代码时出现编译错误

2ledvvac  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(148)

所以,我正在使用BeanShell后处理器将JSON数据写入csv文件。这是我在BeanShell后处理器中的代码。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import com.opencsv.CSVWriter;

public class CsvWrite{
    public static void main(String[] args){
String response = prev.getResponseDataAsString();
        JSONParser parser = new JSONParser();
        File file = new File("D:\\verisk\\first_url_response.csv");

        try {
            FileWriter fileWriter = new FileWriter(file);
            CSVWriter csvWriter = new CSVWriter(fileWriter);

            // adding header to csv
            String[] header = { "id", "title", "description", "price", "discountPercentage", "rating", "stock",
                    "brand" };
            csvWriter.writeNext(header);

            Object obj = parser.parse(response);
            JSONObject jsonObject = (JSONObject) obj;

            JSONArray productArray = (JSONArray) jsonObject.get("products");

            int productArraySize = productArray.size();
            for (int i = 0; i < productArraySize; i++) {
                JSONObject productDetailObject = (JSONObject) productArray.get(i);
                String id = (productDetailObject.get("id").toString());
                String title = (productDetailObject.get("title").toString());
                String price = (productDetailObject.get("price").toString());
                String description = (productDetailObject.get("description").toString());
                String discountPercentage = (productDetailObject.get("discountPercentage").toString());
                String rating = (productDetailObject.get("rating").toString());
                String stock = (productDetailObject.get("stock").toString());
                String brand = (productDetailObject.get("brand").toString());

                String[] productDetails = { id, title, description, price, discountPercentage, rating, stock, brand };
                csvWriter.writeNext(productDetails)
            }
            fileWriter.close();

        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

但是,它不会使用log命令写入csv. on,并显示以下错误。
2023 - 01 - 02 14:41:06,853错误o.a.j.u.豆壳翻译:调用bsh方法时出错:eval在文件中:在线评估:''导入java.io.文件;导入java. io文件未找到异常;导入java.io.FileWr... ""在第44行第25列遇到"}"。
2023 - 01 - 02 14:41:06,853信息o.a.j.t. JMeterThread:穿线完成:线程组1 - 1 2023 - 01 - 02 14:41:06,853关于JMeterThread的信息:螺纹完成:线程组1 - 1 2023 - 01 - 02 14:41:06,854信息o.a.j.e.标准JMeterEngine:通知测试听众测试结束2023 - 01 - 02 14:41:06,854信息o.a.j.g.u. JMeterMenuBar:setRunning(假,* 本地 *)
注意:我已经在lib文件夹中添加了json-simple-1.1.jar和opencsv-4.1.jar。代码在eclipse中使用java。

b4lqfgs4

b4lqfgs41#

此行:
在第44行第25列遇到"}"。
意味着您有额外的},它与开头的不匹配,因此我认为代码不"相同"
此外,您还需要显式调用main函数,Beanshell没有入口点,并且颠倒了代码的处理过程。
另一件事是,从JMeter3.1开始,建议使用JSR223TestElements和Groovy语言编写脚本
最后,如果您使用2个或更多线程运行代码,则会遇到race condition,从而导致数据损坏和/或丢失,因此我建议使用JSON Extractor从JSON中提取值,并使用Flexible File Writer将其写入CSV文件

相关问题