使用 Rest Assured response.jsonPath().getObject() 进行序列化返回 null

问题描述

我有一个返回 JSON 的 API,它看起来像这样

{"listings":[
 {
    "albumId": 1,"id": 1,"title": "accusamus beatae ad facilis cum similique qui sunt","url": "https://via.placeholder.com/600/92c952","thumbnailUrl": "https://via.placeholder.com/150/92c952"
  },{
    "albumId": 1,"id": 2,"title": "reprehenderit est deserunt velit ipsam","url": "https://via.placeholder.com/600/771796","thumbnailUrl": "https://via.placeholder.com/150/771796"
  },"id": 3,"title": "officia porro iure quia iusto qui ipsa ut modi","url": "https://via.placeholder.com/600/24f355","thumbnailUrl": "https://via.placeholder.com/150/24f355"
  },"id": 4,"title": "culpa odio esse rerum omnis laboriosam voluptate repudiandae","url": "https://via.placeholder.com/600/d32776","thumbnailUrl": "https://via.placeholder.com/150/d32776"
  },"id": 5,"title": "natus nisi omnis corporis facere molestiae rerum in","url": "https://via.placeholder.com/600/f66b97","thumbnailUrl": "https://via.placeholder.com/150/f66b97"
  },]}

我想将该 JSON 序列化到我的 MyObject 类。我只需要 2 个变量,所以我会忽略其他变量。

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown=true)
public class MyObject {

    private String title;
    private String url;

    // Getters and Setters here
}

我的测试运行器看起来像这样

public class MyTest {

  @Test
  public void runTest() {

    // Usual Rest-Assured GET request here

    Response response = request
      .request(Method.GET);


    List < MyObject > objects = Arrays.asList(response.jsonPath().getObject("listings",MyObject[].class));

    String testOneTitle = response.jsonPath().get("listings[0].title");
    System.out.println("testOneTitle " + testOneTitle); // OK - Returns String of the title

    System.out.println("Size " + objects.size()); // OK -Returns the size of the List

    for (int z = 0; z < 3; z++) {
      System.out.println("Title " + objects.get(z).getTitle()); // NOK - This returns null 
    }
  }
}
Title null
Title null
Title null

我不知道为什么它返回 null。

我怀疑这个方法没有正确序列化 JSON?

List < MyObject > objects = Arrays.asList(response.jsonPath().getObject("listings",MyObject[].class));

知道为什么吗?

从讨论 here 中学习,我猜 Rest-Assured 使用 3rd 方库来序列化 JSON ?不确定,但我按照该链接的建议添加依赖项

// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
implementation group: 'com.fasterxml.jackson.core',name: 'jackson-databind',version: '2.12.3'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)