放心:未能解析JSON文档

问题描述

无法解析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 = "{\r\n" + 
                " \r\n" + 
                "\"ID\" : \""+deletebookid+"\r\n" + 
                " \r\n" + 
                "} \r\n" + 
                "";
        return deleteid;
    }

解决方法

缺少JSON中的右引号:

String deleteid = "{\r\n" + 
            " \r\n" + 
            "\"ID\" : \""+deletebookid+"\"\r\n" + // <-- Added backslash and quote here
            " \r\n" + 
            "} \r\n" + 
            "";

顺便说一句,您不需要在JSON中使用所有这些换行符和空格:

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

这更容易阅读。