首頁  >  文章  >  使用可變鍵定義 POJO

使用可變鍵定義 POJO

王林
王林轉載
2024-02-09 08:42:09482瀏覽

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 檢索它。

解決方法

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

map<string, citydata> parsed = objectmapper.readvalue(
  input,
  new typereference<map<string, citydata>>() {});

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

{
  "city": {
    "Berlin": { ... },
    "Paris": { ... }
  }
}

其中將您的實際 json 嵌套在鍵「city」下(map4b77346e33c8acbbb76d82c1dabac30c city)。

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

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