簡體   English   中英

使用 Lombok 反序列化 POJO,使用 Rest 發送復雜 JSON

[英]Disserializing POJO with Lombok sending complex JSON using Rest Assured

這是我第一次使用 POJO 和 Lombok 與 Rest 保證和復雜 JSON。

我決定使用這種方法,因為 JSON 包含許多字段..

示例 JSON

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

“值” object 包含大約 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 Assured 發送一個 POST 請求並這樣做:

  1. 創建一個值 object 並添加一個值(我將在這里重復更多字段)

     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"

這就是問題開始的地方。 我無法弄清楚我做錯了什么。 和最重要的問題。 我是否正確使用了構建模式? 正確的 object 是否傳遞給 POST ()?

請幫我弄清楚。 簡單的 JSON 示例沒有問題,但我沒有找到包含對象數組的 JSON 示例。

我明白我的錯誤是什么...

在這個實現中,我需要將值 object 的類型更改為 RecordsItem class 中的值。

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

並創建另一個 TransactionFields 類型的 object

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

然后在 post 請求正文中使用 transactionFields 變量

.body(transactionFields)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM