问题描述
无法解析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 + "\"}";
这更容易阅读。