首頁 > Java > 主體

使用可變鍵定義 POJO

王林
發布: 2024-02-09 08:42:09
轉載
484 人瀏覽過

php小編子墨在這篇文章中將為大家介紹如何使用可變鍵定義POJO(普通舊式的Java物件)。在程式設計中,POJO是指一個簡單的Java對象,它不依賴任何特定的框架或函式庫。可變鍵是指在定義POJO時,鍵(屬性名)可以依需求進行動態的修改或擴充。這種技術讓我們能夠更靈活地操作物件屬性,提高程式碼的可讀性和可維護性。接下來,我們將深入探討如何使用可變鍵定義POJO,並給出一些實際應用場景的範例。

問題內容

我正在嘗試將 json 轉換為 pojo,其中鍵是可變的。例如:以下範例中的柏林、巴黎:

{
  "berlin": {
    "en-us": {
      "displayname": "us",
      "supportedlanguage": [
        "us"
      ],
      "fullexample": "hello us"
    },
    "en-ca": {
      "displayname": "ca",
      "supportedlanguage": [
        "ca"
      ],
      "fullexample": "hello ca"
    }
  },
  "paris": {
    "en-us": {
      "displayname": "us",
      "supportedlanguage": [
        "us"
      ],
      "fullexample": "hello us"
    },
    "en-ca": {
      "displayname": "ca",
      "supportedlanguage": [
        "ca"
      ],
      "fullexample": "hello ca"
    }
  }
}
登入後複製

對於變數鍵(柏林、巴黎)內的所有內容,例如:

"en-us": {
      "displayname": "us",
      "supportedlanguage": [
        "us"
      ],
      "fullexample": "hello us"
    },
    "en-ca": {
      "displayname": "ca",
      "supportedlanguage": [
        "ca"
      ],
      "fullexample": "hello ca"
    }
登入後複製

我定義的類別如下:

class citydata {

map <string, languagedata> locale;
}

class languagedata {
string displayname;
list<string> supportedlanguage;
string fullexample;
}
登入後複製

最後為了適應variablekeys,我定義了一個新對象,如下所示:

class city {

map<string, citydata> city;

}
登入後複製

但是,我收到以下錯誤:

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Berlin" , not marked as ignorable (0 known properties: ])
登入後複製

如何將變數鍵儲存在 pojo 中?這是必不可少的東西,所以我想透過 jackson objectmapper readvalue 檢索它。

解決方法

您需要將資料解析為 map<string、citydata>,而不是解析為包含 map 屬性的物件。您的根級別是地圖。

map<string, citydata> parsed = objectmapper.readvalue(
  input,
  new typereference<map<string, citydata>>() {});
登入後複製

使用您的類型 city,您可以使用以下結構解析 json:

{
  "city": {
    "Berlin": { ... },
    "Paris": { ... }
  }
}
登入後複製

其中將您的實際 json 嵌套在鍵「city」下(map<string、citydata> city)。

以上是使用可變鍵定義 POJO的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板