Будьте уверены: не удалось проанализировать документ JSON

#json #rest-assured #rest-assured-jsonpath

#json #будьте уверены #будьте уверены-jsonpath

Вопрос:

Не удалось проанализировать документ JSON: почему я получаю эту ошибку. Я пытаюсь передать аргумент в тело ajson для выполнения операции удаления. Данные хранятся в массиве с использованием нотаций TestNG. Когда я запускаю тест, он завершается с сообщением «не удалось проанализировать документ Json»

 import org.testng.annotations.DataProvider;
    import org.testng.annotations.Test;

import Files.BasicsPayloadBody;
import io.restassured.RestAssured;
import io.restassured.path.json.JsonPath;

import static io.restassured.RestAssured.*;
public class Deletebook {
    
    @Test(dataProvider="deletedata")
    public static void deletebooks(String deletebookid)
    {
        RestAssured.baseURI="http://216.10.245.166";
        String DeleteResponse = given().header("Content Type","application/json")
                               .body(BasicsPayloadBody.deletebookdata(deletebookid))
                               .when().post("/Library/DeleteBook.php")
                               .then().extract().response().asString();
            
            JsonPath js = new JsonPath(DeleteResponse);
            System.out.println(js.getString("msg"));
    }

    @DataProvider(name="deletedata")
    public Object[] getdata1()
    {
        return new Object[]{"testeqweedh47ee76","testdweeed145eeddd65","teseetsdd2teseet3wdd"};
    }

    
}



Json Body:

public static String deletebookdata(String deletebookid)
    {
        String deleteid = "{rn"   
                " rn"   
                ""ID" : "" deletebookid "rn"   
                " rn"   
                "} rn"   
                "";
        return deleteid;
    }
  

Ответ №1:

Заключительная кавычка в JSON отсутствует:

 String deleteid = "{rn"   
            " rn"   
            ""ID" : "" deletebookid ""rn"   // <-- Added backslash and quote here
            " rn"   
            "} rn"   
            "";
  

Кстати, вам не нужны все эти разрывы строк и пробелы внутри JSON:

 String deleteid = "{"ID":""   deletebookid   ""}";
  

Это намного легче читать.