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