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

Java 通过Lombok使用Rest-Assured发送复杂JSON来分离POJO,java,json,lombok,rest-assured,Java,Json,Lombok,Rest Assured,这是我第一次使用POJO和Lombok,并使用放心的复杂JSON 我决定使用这种方法,因为JSON包含许多字段 示例JSON {"records":[{"key":"1563106","value":{"ACTION":"A"}}]} “value”对象包含大约50个字段 我使用POJO创建了3个类 public class TransactionFields{ privat

这是我第一次使用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;}
然后,我尝试使用Rest Assured发送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示例。

    我明白我的错误是什么

    在这个实现中,我需要在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)
    

    你能在
    对象值中使用JsonNode吗?@gendan1991,我不明白你的意思。你什么意思
    Object value=value.builder()
    ?对不起,我误解了你的问题。我以为这是对POJO的反序列化。我是否正确使用构建模式?=>由于您使用lombok,因此生成器模式使用正确,并且是传递给POST()的正确对象=>我怀疑主体是否应该包括
    TransactionFields
    作为记录键,也许您应该提供您的放心版本和“V02”uri接口
    public class RecordsItem {
    private Value value;
    private String key;
    
    TransactionFields transactionFields = TransactionFields.builder()
                .records(Arrays.asList(records))
                .build();
    
    .body(transactionFields)