簡體   English   中英

如何使用 SpringBoot + JPA 在 POSTGRES 中存儲 JSON?

[英]how to store JSON in POSTGRES using SpringBoot + JPA?

我有一個嘗試保存到數據庫中的有效負載,每當我發布有效負載時,它都會將映射的 JSON 對象返回為 null 而不是傳遞的有效負載中的值。

這是 JSON 有效載荷

{
    "authStatus": {
        "authStatusCode": 131,
        "authStatusDescription": "API call doesn't need authentication"
    },
    "results": {
        "beepTransactionID": 10764659,
        "payerTransactionID": "5f51eed7347a7",
        "statusCode": "188",
        "statusDescription": "Response was received"
    }
}

發布到 postman 后

{
    "id": 14,
    "authStatusCode": null,
    "authStatusDescription": null,
    "beepTransactionID": null,
    "payerTransactionID": null,
    "statusCode": null,
    "statusDescription": null
}

我的 controller 用於發布

     @PostMapping("/payload")
        public Payload createPayload(@Valid @RequestBody Payload payload) {
            return payloadRepository.save(payload);
        }

我的 model

@Entity
@Table(name = "payload", schema = "public")
    public class Payload {
        private long id;
        Integer authStatusCode;
        String authStatusDescription;
        Integer beepTransactionID;
        String payerTransactionID;
        String statusCode;
        String statusDescription;
    
        public Payload(){
    
        }
    
    //getters and setters

您需要中間對象, Payload需要更深一些才能完全匹配您的 JSON object 的格式

public class Payload {
    AuthStatus authStatus;
    Results results;
    // Add boilerplate code here
}

public class AuthStatus {
    Integer authStatusCode;
    String authStatusDescription;
    // Add boilerplate code here
}

public class Results {
    Integer beepTransactionID;
    String payerTransactionID;
    String statusCode;
    String statusDescription;
    // Add boilerplate code here
}

嘗試使用

@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")

將有效負載按原樣存儲為 JsonNode 格式

暫無
暫無

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

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