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

将从API接收的响应数据导入CSV文件

锺离飞飙
2023-03-14

我正在尝试使用Rest Asure将从API响应中获取的数据存储到CSV文件中。这就是我的代码的样子:

public void Test_01() throws Exception {
    Response response = RestAssured.given() // enter valid credentials
            .get("https://gorest.co.in/public-api/users")
            .then()
            .extract()
            .response();

    String data = response.jsonPath().get("data");

    System.out.println(response.asString().getClass());
    try
    {
        JsonNode jsonTree = new ObjectMapper().readTree(data);
        CsvSchema.Builder csvSchemaBuilder = CsvSchema.builder();
        JsonNode firstObject = jsonTree.elements().next();
        firstObject.fieldNames().forEachRemaining(fieldName -> {csvSchemaBuilder.addColumn(fieldName);} );
        CsvSchema csvSchema = csvSchemaBuilder.build().withHeader();
        CsvMapper csvMapper = new CsvMapper();
        csvMapper.writerFor(JsonNode.class)
                .with(csvSchema)
                .writeValue(new File("src/main/resources/lmsget.csv"), jsonTree);

    }   catch(Exception ex)

    {
        throw ex;
    }
}

当我试图执行这个测试时,我得到一个错误:Schema指定要写入头行;但不包含列名。也许,这是因为JSON的格式,它看起来像:

"code": 200,
"meta": {
"pagination": {
"total": 2610,
"pages": 131,
"page": 1,
"limit": 20
}

之后,会有一个包含对象的数组data。我只想只存储这些数据。我还尝试了一些作为JsonPath提取响应的更改:

Object data = response.JsonPath.get("data");

但是当我在JsonNode jsonTree=new ObjectMapper()中使用它时。readTree(数据) 我收到错误信息:

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('i' (code 105)): was expecting double-quote to start field name
at [Source: (String)"[{id=2583, name=Aryan Shah, email=shah_aryan@oreilly.biz, gender=male, status=inactive},

共有1个答案

强安和
2023-03-14

解决方案:

  • 步骤1:将响应转换为字符串格式的json
  • 第2步:Jackson提取数组数据,不放心
String res = given()
                .get("https://gorest.co.in/public-api/users")
                .asString();
try {
     JsonNode jsonTree = new ObjectMapper().readTree(res).get("data");
     ...
}  
 类似资料:
  • 想要知道更多东西吗?当你需要从表中查找某些值时,可以使用冗长的 case 语句或 selectors 实现,但更整洁的方式是使用 extlookup 函数实现。 在 puppetmaster 上可以使用 extlookup 函数查询外部的 CSV 文件,并返回匹配的数据片段。 将所有数据组织到一个单一的文件并将它从 Puppet 配置清单中分离出来, 可以使维护工作变得更简单,也便于与其他人分享:

  • 我试图从csv文件导入数据。但它不起作用。有人能帮我吗? 我的简历文件: 用户名、密码usr1、pswd1 usr2、pswd2、usr3、pswd 3。。。。。 我的CSV数据集配置: 文件名:D:\Jmeter\Data\Login。csv变量名称:用户名、密码是否允许引用数据?:EOF上的真正回收?:错误EOF?上的停止线程:真的 但在请求正文中,用户名和密码没有反映出来 POST 数据:

  • 我用的是Oracle 10g,SQL Developer我想知道有没有办法从CSV文件导入数据,其中字段用','分隔,行用' \n '结束使用SQL查询我尝试了这个查询 < code >将文件“C:/tmp.csv”中的数据加载到表CSVTEST2字段终止于“,”行终止于“\n”忽略1行(ID,FIRSTNAME,LASTNAME,birth date); 但是它不起作用,我总是从sql开发人员那

  • 问题内容: 我有以下结构的csv文件: 使用以下MySQL函数如何导入MySQL表的第一和第三列: 我为我的英语道歉! 提前致谢 ! 问题答案: 您可以指定列,并将不需要的列标记为“ @dummy”。 替换,并且只要你喜欢。要设置不在数据文件中的其他列,您可以这样做: 作为进一步的参考,我建议您看一下MySQL参考。

  • 问题内容: 我想将csv文件导入到mysql中。 http://www.tech- recipes.com/rx/2345/import_csv_file_direct_into_mysql/ 但是csv中的列名称与数据库表中的列名称不同,我该怎么办?我想以编程方式来做。 问题答案: 您可以创建一个脚本来解析您的csv文件并将数据放入db。 就像是:

  • Python是如何将CSV文件读入pandas数据帧的(我可以使用它进行统计操作,可以有不同类型的列,等等)? 我的CSV文件有以下内容: 在R中,我们将使用以下方法读取此文件: 这将返回一个R数据。框架: 有没有类似python的方法来获得相同的功能?