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中文網其他相關文章!