java - JSON 序列化问题:InvalidDefinitionException:
问题描述
我有一个场景,我需要执行一个否定的测试场景。
这是一个更新客户对象的 PUT 调用。
我需要将对象转换为 JSON,并在应用于有效负载之前删除强制属性。
现在,当我提供一个缺少属性的有效负载时,我期待 400 响应和错误消息。
我使用了以下代码,但有 InvalidDefinitionException
错误
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
代码:
UpdateCustomerModel updateCustomerModel = new UpdateCustomerModel()
updateCustomerModel.setFirstName("abc");
updateCustomerModel.setLastName("abc");
updateCustomerModel.setEmail("a@a.com");
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(updateCustomerModel);
JSONObject updateCustomerJson = new JSONObject(json);
updateCustomerJson.getJSONObject("customer").remove("email");
Response response =
given().filter(new RequestLoggingFilter(this.requestCapture))
.header("Authorization", getSession().getToken()).body(updateCustomerJson)
.body(updateCustomerJson)
.when()
.put(Resource.updateCustomer)
.then()
.extract().response();
PAYLOAD: 有效载荷中的强制性属性是;
firstname, lastname and email
{
"customer": {
"id": null,
"firstname": "Chuck",
"lastname": "Patterson",
"store_id": null,
"website_id": 1,
"addresses": [
],
"default_billing": null,
"default_shipping": null
}
}
尝试研发许多配置,但没有乐趣
例如
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
有人可以指出任何方向吗?
解决方案
杰克逊似乎无法序列化JSONObject
你试图作为身体传递的东西。删除不需要的字段后,为什么不尝试将其转换回字符串?
推荐阅读
- c# - 如何实现 TCP 数据传输或串口通信到 asp.net web 应用程序
- c++ - 访问另一个类的 main 中定义的类的实例
- c++ - 当 std::string 变量是全局变量时的不同行为
- c - 了解双免费 mitre.org 示例
- r - 正则表达式匹配其他标签(字符串对)
- python - 将测试统计信息写入 google colab 中的文件
- c++ - 使用现有的类成员指针从类外部调用函数
- node.js - 如何通过 API 网关在 Nodejs API 中提供 cognito 用户数据
- javascript - alpha_spaces 的节点输入验证器规则
- javascript - 如何在弹出模式中使用 querySelector