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

响应体没有得到反序列化使用不放心

邓鸿雪
2023-03-14

当我尝试将响应正文反序列化为POJO时,会设置空值,并且在未使用JsonIgnoreProperties(ignoreUnknown=true)时会遇到以下错误:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“City”(类TestNGMaven.restAssuredProject.WeatherInfo),未标记为可忽略(6个已知属性:“湿度”、“温度”、“天气描述”、“城市”、“风速”、“风向度”])

以下是我正在使用的代码:

    public class WeatherInfo
{
    private String city;
    private String temperature;
    private String humidity;
    private String weatherDescription;
    private String windSpeed;
    private String windDirectionDegree;
    // getters and setters
}

使用的方法:

public void getWeatherDetailsForCity(String city) {

        RestAssured.baseURI="http://restapi.demoqa.com/utilities/weather/city";

        Response response= given().
                when().
                get("/"+city)
                .then()
                .extract()
                .response();

        ResponseBody responseBody=response.body();
        //No issues in below code
        System.out.println(responseBody.asString());
        //Exception for the below lines
        WeatherInfo weatherInfo =responseBody.as(WeatherInfo.class);    
        System.out.println(weatherInfo.getCity());

错误:com.fasterxml.jackson.databind.exc.无法识别的属性异常:无法识别的字段“城市”(类TestNGMaven.restAssuredProject. WeatherInfo),未标记为不可忽略(6个已知属性:“湿度”、“温度”、“天气描述”、“城市”、“风速”、“风向度”)在[来源:(字符串)“{”城市“:”海德拉巴“,“温度”:“28.5摄氏度”,“湿度”:“62%”,“天气描述”:“雾霾”,“风速”:“每小时1.5公里”,“风向度”:“度”}"

将城市更改为城市也不能解决错误。

共有1个答案

胡泓
2023-03-14

通过在我使用 GSON 注释样式的 POJO 类中添加以下内容来解决此问题

@SerializedName("City")
    @Expose
    private String city;

并使用以下格式反序列化

WeatherInfo weatherInfo =responseBody.as(WeatherInfo.class,ObjectMapperType.GSON);
 类似资料:
  • 我的输出是吐司: 事实上,我不想吐司错误味精像这样…我想简单的信息像“电子邮件或密码是错误的。再试一次” 帮帮我谢谢

  • 我使用的是改装版2.0.0-beta1。 在测试中,我有一个替代方案,预计会出现错误HTTP 400 我想改装一下。回答 MyError没有反序列化-我只在这里看到它 但它没有给我MyError作为对象

  • 获取外部API如下图-[1]:https://i.stack.imgur.com/a28Y1.png 用作数据数组对象。 另一个物体在下面 已使用/getForObject/exchange/getForEntity,但未得到任何响应。请在底部检查我使用的方法。 现在用作数据对象的列表也没有得到任何响应- 下面是resttemplate如何调用这些- 响应obj=restTemplate。getF

  • 我们正在尝试使用具有net core后端的流,但出现反序列化错误 协议是版本3.14.0 grpc-web-gen是1.2.1 生成客户端的命令是:协议-我=。/原型。/原型/*. proto-js_out=import_style=通用js,二进制:。/dist--grpc-web_out=import_style=通用js dts,模式=grpcwebtext:。/dist 我们成功连接到en

  • 从我的Java后端,我正在使用另一个我不管理的后端,它的API定义不可用。我正在创建它的服务的OpenAPI定义,并使用Swagger Codigen来生成客户端。 有一个endpoint返回一个复杂对象: 在该对象中,和始终存在,但在同一级别上有数百个动态项。在上面的示例中,关键点是可以预测的,但实际上是字母和数字的序列,类似于“245df921”。动态项始终是具有相同项数和相同预期位置的数组。