Java BeanとMapを相互に変換するにはどうすればよいですか? (コード)
この記事の内容は、Java Bean と Map を相互に変換する方法についてです。 (コード)、それは特定の参考値を必要としている友人がそれを参照できることを願っています。
概要
Apache の BeanUtils Bean ツール クラスは非常に強力で、基本的に Bean 操作のすべてのメソッドをカバーします。ここでは 2 つの側面について説明します。1 つは Bean から Map への変換、もう 1 つは Map から Bean への変換です。Bean から Map へは実際に Java の動的リフレクション テクノロジが使用されており、Bean の種類に関係なく、動的に変換できます。これは Map オブジェクトになりますが、前提条件として、フィールドがキャメル ケースの名前付けに準拠している必要があり、これもコーディング仕様です。各フィールドには getter メソッドと setter メソッドが必要です。 Map to Bean もリフレクションを通じて Bean に動的に解析されます。 Java のリフレクションは実際に非常に重要であり、私たちが使用する多くのツール クラスに存在します。それを使用できる必要があるだけでなく、それを自分で手書きで実装できることが最も重要です。
Apache BeanUtils を使用して Bean を Map に変換
#コードの実装
/** * 用apache的BeanUtils实现Bean covert to Map * @throws Exception */ public static void beanToMap() throws Exception { User user=new User(); Map<String,String> keyValues=null; user.setPassWord("password"); user.setComments("test method!"); user.setUserName("wang shisheng"); user.setCreateTime(new Date()); keyValues=BeanUtils.describe(user); LOGGER.info("bean covert to map:{}", JSONObject.toJSON(keyValues).toString()); }
テスト結果
Apache BeanUtilsを使用してMapをBeanに変換する
コードの実装
/** * 用apache的BeanUtils实现Map covert to Bean * @throws Exception */ public static void mapToBean() throws Exception { Map<String,String> keyValues=new HashMap<>(); User user=new User(); keyValues.put("sessionId","ED442323232ff3"); keyValues.put("userName","wang shisheng"); keyValues.put("passWord","xxxxx44333"); keyValues.put("requestNums","34"); BeanUtils.populate(user,keyValues); LOGGER.info("map covert to bean:{}", user.toString()); }
テスト結果
#コード実装
/** * 应用反射(其实工具类底层一样用的反射技术) * 手动写一个 Bean covert to Map */ public static void autoBeanToMap(){ User user=new User(); Map<String,Object> keyValues=new HashMap<>(); user.setPassWord("password"); user.setComments("test method!"); user.setUserName("wang shisheng"); user.setUserCode("2018998770"); user.setCreateTime(new Date()); Method[] methods=user.getClass().getMethods(); try { for(Method method: methods){ String methodName=method.getName(); //反射获取属性与属性值的方法很多,以下是其一;也可以直接获得属性,不过获取的时候需要用过设置属性私有可见 if (methodName.contains("get")){ //invoke 执行get方法获取属性值 Object value=method.invoke(user); //根据setXXXX 通过以下算法取得属性名称 String key=methodName.substring(methodName.indexOf("get")+3); Object temp=key.substring(0,1).toString().toLowerCase(); key=key.substring(1); //最终得到属性名称 key=temp+key; keyValues.put(key,value); } } }catch (Exception e){ LOGGER.error("错误信息:",e); } LOGGER.info("auto bean covert to map:{}", JSONObject.toJSON(keyValues).toString()); }
テスト結果
以上がJava BeanとMapを相互に変換するにはどうすればよいですか? (コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

さまざまなアーキテクチャCPUでのJavaプログラムのメモリリーク現象の分析。この記事では、JavaプログラムがARMおよびX86アーキテクチャCPUでさまざまなメモリ動作を示すケースについて説明します...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

Javaリモートデバッグでの絶え間ない買収に関する質問と回答は、Javaをリモートデバッグに使用する際に、困難な現象に遭遇する可能性があります。それ...

バックエンド開発における階層アーキテクチャの問題について議論します。バックエンド開発では、一般的な階層アーキテクチャにはコントローラー、サービス、DAOが含まれます。

名前を数字に変換してグループ内でソートを実装する方法は?ユーザーをグループでソートする場合、ユーザーの名前を数字に変換して、異なる可能性があることがよくあります...
