java i/o 问题没有找到类 org.json.JSONObject 的序列化程序,也没有发现创建 BeanSerializer 的属性
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/13243037/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Issue with i/o No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer
提问by
not sure whats going on, the full error is:
不知道发生了什么,完整的错误是:
Problem with i/o No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) )
I am trying to send a PUT request to a RESTful service. I am parsing a POST And sending modified key/value pairs for 'ID' and 'enabled' for the PUT.
我正在尝试向 RESTful 服务发送 PUT 请求。我正在解析 POST 并为 PUT 发送修改后的“ID”和“启用”键/值对。
@Test(dependsOnMethods= {"Post"})
public void Put() throws IOException {
logger.logTestActivity("Testing FORM data POST using Excel file");
requestBuilder = new RequestSpecBuilder();
String jsonString = "";
boolean enabledModify = false;
try {
BufferedReader in = new BufferedReader(new FileReader(
xmlTest.getParameter("json-post")));
String str;
while ((str = in.readLine()) != null) {
jsonString += str;
}
JSONObject jsonObjPut = new JSONObject(jsonString);
jsonObjPut.put("_id", createUserId);
jsonObjPut.put("enabled",enabledModify);
System.out.println(jsonObjPut.toString());
in.close();
requestBuilder.setContentType(ContentType.JSON);
requestSpecification = requestBuilder.build();
responseBuilder.expectStatusCode(Integer.parseInt(xmlTest
.getParameter("http-status-code-200")));
responseBuilder.expectContentType(ContentType.JSON);
responseSpecification = responseBuilder.build();
System.out.println(createUserId);
String responseJson = given().body(jsonObjPut).
when().put("/" + createUserId).asString();
System.out.println(responseJson);
logger.logTestActivity("Finished testing FORM data POST using Excel file");
} catch (AssertionError e ) {
logger.logTestActivity(
"Error testing FORM data post: " + e.getMessage(),logger.ERROR);
System.out.println("REST URL: " + RestAssured.baseURI + " "
+ RestAssured.port + " " + RestAssured.basePath );
Assert.fail("Error testing FORM data POST: " + e.getMessage());
throw e;
} catch (IOException | JSONException e) {
System.out.println("Problem with i/o" + e.getMessage());
}
}
createUserID is a global variable that is the ID parsed from the POST.
createUserID 是一个全局变量,它是从 POST 解析出来的 ID。
JSON file that is getting parsed looks like this:
正在解析的 JSON 文件如下所示:
{
"enabled" : false,
"_id" : "fdse332a-22432d-4432b"
}
In a before test method I am setting up the restassured with all the appropriate url endpoints...
在之前的测试方法中,我正在使用所有适当的 url 端点设置放心...
Also, the PUT is also failing, with a NULLPointerException Error. That may be another post in the future!
此外,PUT 也失败,出现 NULLPointerException 错误。那可能是未来的另一个帖子!
回答by
Solution: I was not converting my JSON object to a string when passing to restassured.
解决方案:在传递给 restassured 时,我没有将我的 JSON 对象转换为字符串。
String responseJson = given().body(jsonObjPut.toString).
This did the trick. I now modify my existing json with generated ID and do a successful PUT on the RESTful service.
这成功了。我现在使用生成的 ID 修改我现有的 json 并在 RESTful 服务上成功执行 PUT。
回答by ketankk
I was also facing same issue with java Spring rest Api.
It was throwing BeanSerializerExcption.
Use JsonNODE
class instead of JSONObject
.
我也面临与 java Spring rest Api 相同的问题。它正在抛出 BeanSerializerExcption。使用JsonNODE
class 而不是JSONObject
.