当前位置: 首页 > 知识库问答 >
问题:

通过Lombok使用Rest-Assured发送复杂JSON来分离POJO

韩朝斑
2023-03-14

这是我第一次使用POJO和Lombok,并使用放心的复杂JSON。

我决定使用这种方法,因为JSON包含许多字段。。

示例JSON

{"records":[{"key":"1563106","value":{"ACTION":"A"}}]}

“value”对象包含大约50个字段。

我使用POJO创建了3个类

public class TransactionFields{
private List<RecordsItem> records;}


public class RecordsItem {
private Object value;
private String key;}


public class Value{
private String ACTION;}

通过向其中的每一个添加注释

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor

然后我尝试使用Rest保证发送一个POST请求,并这样做:

>

  • 创建一个值对象并添加一个值(我将在这里重复更多字段)

      Value value = Value.builder()
              .ACTION("A")
              .build();
    
     RecordsItem records = RecordsItem.builder()
                      .key("1563106")
                      .value(value)
                      .build();
    

    然后我发送一个POST请求

    given()
                .contentType("application/vnd.kafka.json.v2+json")
                .body(records).
                when().post("V02")
                .then().log().all().statusCode(200);
    

    结果,我得到了错误

    "error_code": 422,
    "message": "Unrecognized field: value"
    

    问题就从这里开始。我不知道我做错了什么。也是最重要的问题。我是否正确使用构建模式?传递给POST()的对象是否正确?

    请帮我弄清楚。简单的JSON示例没有问题,但我没有发现包含对象数组的JSON示例。

  • 共有1个答案

    岳阳文
    2023-03-14

    我明白我的错误是什么。。。

    在这个实现中,我需要在RecordsItem类中将value对象的类型更改为value。

    public class RecordsItem {
    private Value value;
    private String key;
    

    并创建另一个TransactionFields类型的对象

    TransactionFields transactionFields = TransactionFields.builder()
                .records(Arrays.asList(records))
                .build();
    

    然后使用post请求主体中的transactionFields变量

    .body(transactionFields)
    
     类似资料:
    • 假设我得到了以下模型: 现在我想验证我的RESTendpoint是否正常工作(只需要必填字段),所以我想执行以下2个请求并检查它们是否导致200: 和: 对于第一个,代码很简单: 但第二个开始有点糟糕了。如果我不为提供值,默认情况下它将为空,这就是通过REST(第一个TC)发送的内容。但现在我不想发送这个字段。换句话说:

    • 服务器没有看到我的JSON参数。我用邮差检查服务器,一切正常。

    • 我从新的谷歌通知服务Firebase Cloud Messaging开始。我能够从Firebase用户控制台向Android设备发送通知以进行测试。 我正在努力解决的问题是,我无法通过控制台发送复杂的结构化数据 是否有任何方法可以使用Firebase控制台发送具有嵌套属性的通知?

    • 问题内容: 我试图替换在终端中运行的Netcat命令,该命令将重置服务器上的某些数据。netcat命令如下所示: 我一直试图在Java中实现它,因为我希望能够从正在开发的应用程序中调用此命令。我遇到了问题,但命令从未在服务器上执行。 这是我的Java代码: 代码还挂在应读取的while循环上,我不知道为什么。我一直在使用Wireshark捕获数据包,并且输出的数据看起来是相同的: 也许其余的包装袋

    • 我正在尝试将一个复杂的对象从服务器传递到客户端。我的客户端代码如下所示: 而类是: 在服务器上,我使用: 但不管用。如果我从 (“newsearch”上的

    • 我正在尝试使用Retrofit2和静态编程语言发送一个复杂对象作为我请求的参数。该对象的结构如下: 列表字段的数量是不同的(可以是2个列表,也可以是10个)以及每个列表中的项目数量。我正在使用以下代码来实现这一点,之前用适当的值填充了我的Map: 由于某种原因,这种方法无法正常工作,服务器只是忽略了我的参数。我还尝试将它们作为string/ject发送,但服务器似乎只接受FormUrlEncode