簡體   English   中英

Yasson 沒有正確轉換子類

[英]Yasson not converting subclasses properly

我正在為 payara-micro 構建一個應用程序。 我需要將 Json 字符串轉換為擴展超級 class 的 object。 我遇到的問題是父字段和子字段都沒有填充,並且創建的實例不是子類類型:

例如Person有一個Vehicle列表(子類型: BikeBus ......)

  {
      name: "John",
      vehicles: [
          {
              type: "bike",
              doors: 5
          }
      ]
  }

生成的 json 的Vehicle將是一個Person name ,其中包含一個元素,但該元素的類型將為VehicleVehicle中的任何字段都沒有值。

Jsonb jsonb = JsonbBuilder.create();
Person person = jsonb.fromJson(jsonString, Person.class);

不幸的是,您正在尋找的功能不是 Yasson(也不是 JSON-B)的一部分。 規范沒有明確提到這一點,但序列化器/反序列化器的用戶指南暗示了這一點(強調我的):

讓我們看一下樣本。 想象一下,我們想要序列化和反序列化一個寵物載體列表。 由抽象 class Animal 定義的攜帶寵物。 它可以是它的任何子類。 我們想正確地序列化和反序列化它。 為此,我們需要在 JSON 文檔中保留類型信息,並將其用於反序列化。 可以使用自定義序列化器/解串器對來完成。

該示例包含一個自定義序列化器/反序列化器,它應該會為您提供所需的結果,但您必須自己實現此自定義序列化器/反序列化器。

暫無
暫無

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

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