搜尋

首頁  >  問答  >  主體

Spring Boot回傳模型的JSONArray欄位為空

我在物件中有一個JSONArray欄位:

@Column(name = "_history", columnDefinition = "JSON")
@Convert(converter = JSONArrayConverter.class)
private JSONArray history;

這是JSONArrayConverter的程式碼:

@JsonSerialize
@Converter(autoApply = true)
public class JSONArrayConverter implements AttributeConverter<JSONArray, String> {

    public static final Logger LOGGER = LoggerFactory.getLogger(JSONObjectConverter.class);

    @Override
    public String convertToDatabaseColumn(JSONArray array) {
        LOGGER.debug(array.toString());
        if (array == null)
            return new JSONArray().toString();
        String data = null;
        try {
            data = array.toString();
        } catch (final Exception e) {
            LOGGER.error("JSON writing error", e);
        }
        return data;
    }

    @Override
    public JSONArray convertToEntityAttribute(String data) {
        if (_EMPTY.equals(data) || data == null || "[]".equals(data))
            return new JSONArray();
        JSONArray array = null;
        try {
            array = new JSONArray(data);
        } catch (final Exception e) {
            LOGGER.error("JSON reading error", e);
        }
        return array;
    }
}

問題是當從MySQL資料庫請求物件時(history是JSON列並且有資料),Spring Boot將其傳回為空:

"history": {}
P粉076987386P粉076987386446 天前647

全部回覆(1)我來回復

  • P粉496886646

    P粉4968866462023-09-13 10:53:10

    最後,我解決了這個問題。

    <dependency>
        <groupId>io.hypersistence</groupId>
        <artifactId>hypersistence-utils-hibernate-60</artifactId>
        <version>3.4.3</version>
    </dependency>

    首先,將上述儲存庫加入到pom.xml中。然後將程式碼更改為以下內容:

    @Column(name = "_history", columnDefinition = "json")
    @Type(JsonType.class)
    private List<Map<String, Object>> history = new ArrayList<>();

    然後一切都正常工作。

    回覆
    0
  • 取消回覆