首頁  >  文章  >  檢查轉換為 Java 類別時 Json 屬性值的類型

檢查轉換為 Java 類別時 Json 屬性值的類型

WBOY
WBOY轉載
2024-02-22 14:16:06424瀏覽

php小編柚子為您帶來本文的 Java 問答主題:「檢查轉換為 Java 類別時 Json 屬性值的類型」。在開發過程中,我們經常需要將 JSON 資料轉換為 Java 對象,但在此過程中如何有效地檢查和處理屬性值的類型是一項重要的技能。本文將為您解答這個問題,幫助您更能理解並運用 JSON 資料轉換技術。

問題內容

假設我有以下json數據,這裡我有整數類型的id,在java類別中id的類型是string。

{
  "id": 1,
  "name": "user1"
}
@lombok.data
@allargsconstructor
@noargsconstructor
class data {
    string id;
    string name;
}

我想將 json 轉換為該類,同時嚴格檢查 json 屬性的值是否與類別欄位的類型相同。

String json = "{\"id\":1,\"name\":\"user1\"}";
ObjectMapper objectMapper = new ObjectMapper(new JsonFactory());

Data data = objectMapper.readValue(json, Data.class);
System.out.println(data);

data(id=1, name=user1)

#我希望這裡不應該發生轉換,但它會被轉換。

解決方法

我猜想的一種方法是使用自訂反序列化器並進行簡單的類型檢查:

public class customdeserializer extends stddeserializer<string> {

  protected customdeserializer() {
    this(null);
  }

  protected customdeserializer(class<?> vc) {
    super(vc);
  }

  @override
  public string deserialize(jsonparser p, deserializationcontext ctxt) throws ioexception, jacksonexception {
    if (p.currenttoken() != jsontoken.value_string) {
      throw new invalidformatexception(p, "expected string type", p.getvalueasstring(), string.class);
    }
    return p.getvalueasstring();
  }
}

然後在您想要檢查的欄位中使用該反序列化器:

public class Data {
  @JsonDeserialize(using = CustomDeserializer.class)
  String id;
}

以上是檢查轉換為 Java 類別時 Json 屬性值的類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除