Невозможно преобразовать JSON в объект, используя getObject [java.lang.ClassCastException: [B не может быть приведен к [C] - PullRequest
0 голосов
/ 17 мая 2019

У меня проблемы с преобразованием ответа JSON в объект с использованием getObject.Ответ JSON выглядит следующим образом:

{"data": {"id": 2, "name": "fuchsia rose", "year": 2001, "color": "# C74375", "pantone_value":" 17-2031 "}}

Я использую restAssured 2.9.0 и пробовал это:

public class User {


    String name;
    String color;
    String pantone_value;
    int year;
    int id;
}


 @Test
    public void testUserSerialisation()  {


      User user = given()
              .when()
              .get("https://reqres.in/api/unknown/2")
              .then()
              .extract()
              .response()
              .getBody()
              .jsonPath()
              .getObject("data", User.class);

}

Я получаю следующую ошибку:

java.lang.ClassCastException: [B cannot be cast to [C

1 Ответ

0 голосов
/ 05 июля 2019

Мне удалось сопоставить ответ JSON с объектом пользователя.

User.java

/**
 * 
 */
package com.apiautomation.framework.titan.models;

/**
 * @author vamsir
 *
 */
public class User {

    public String name;
    public String color;
    public String pantone_value;
    public int year;
    public int id;

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return the color
     */
    public String getColor() {
        return color;
    }
    /**
     * @param color the color to set
     */
    public void setColor(String color) {
        this.color = color;
    }
    /**
     * @return the pantone_value
     */
    public String getPantone_value() {
        return pantone_value;
    }
    /**
     * @param pantone_value the pantone_value to set
     */
    public void setPantone_value(String pantone_value) {
        this.pantone_value = pantone_value;
    }
    /**
     * @return the year
     */
    public int getYear() {
        return year;
    }
    /**
     * @param year the year to set
     */
    public void setYear(int year) {
        this.year = year;
    }
    /**
     * @return the id
     */
    public int getId() {
        return id;
    }
    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

}

ResReqClassMapping.java

/**
 * 
 */
package com.apiautomation.framework.titan.testsuites.samples;

import org.testng.annotations.Test;

import com.apiautomation.framework.titan.models.User;

import io.restassured.RestAssured;

/**
 * @author vamsir
 *
 */
public class ResReqClassMapping {

    @Test
    public void testUserSerialisation()  {


      User user = RestAssured.given()
              .when()
              .get("https://reqres.in/api/unknown/2")
              .then()
              .extract()
              .response()
              .getBody()
              .jsonPath()
              .getObject("data", User.class);


      System.out.print(user.getColor());

}


}


Ответ

[RemoteTestNG] detected TestNG version 6.14.3
#C74375
PASSED: testUserSerialisation

===============================================
    Default test
    Tests run: 1, Failures: 0, Skips: 0
===============================================


===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================


...