Java の Jackson ライブラリ内のオブジェクトのシリアル化とデータ ジェネリック バインディングを分析します。
Jackson Object Serialization
ここでは、Java オブジェクトを JSON ファイルにシリアル化し、JSON ファイルを読み取って取得してオブジェクトに変換する方法を紹介します。この例では、Student クラスが作成されます。 JSON で表現される Student オブジェクトを含む Student.json ファイルを作成します。
C:>Jackson_WORKSPACE.
ファイル: JacksonTester.java
import java.io.File; import java.io.IOException; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; public class JacksonTester { public static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { Student student = new Student(); student.setAge(10); student.setName("Mahesh"); tester.writeJSON(student); Student student1 = tester.readJSON(); System.out.println(student1); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(new File("student.json"), student); } private Student readJSON() throws JsonParseException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); Student student = mapper.readValue(new File("student.json"), Student.class); return student; } } class Student { private String name; private int age; public Student(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } }
で JacksonTester という名前の Java クラス ファイルを作成します
javac を使用して次のクラスをコンパイルします:
C:\Jackson_WORKSPACE>javac JacksonTester.java
次に、jacksonTester を実行して結果を確認します。
C:\Jackson_WORKSPACE>java JacksonTester
出力結果を確認する
Student [ name: Mahesh, age: 10 ]
Jackson データ バインディング ジェネリックス
単純なデータ バインディングでは、キー オブジェクトとして String を、値オブジェクト マッピング クラスとして String を使用します。代わりに、具体的な Java オブジェクトを使用し、JSON に型キャストして使用できます。
クラス UserData を使用してユーザー固有のデータを保存する次の例を考えてみましょう。
Java クラス ファイル ディレクトリ C:>Jackson_WORKSPACE.
ファイル名: JacksonTester.java
import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; public class JacksonTester { public static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { ObjectMapper mapper = new ObjectMapper(); Map userDataMap = new HashMap(); UserData studentData = new UserData(); int[] marks = {1,2,3}; Student student = new Student(); student.setAge(10); student.setName("Mahesh"); // JAVA Object studentData.setStudent(student); // JAVA String studentData.setName("Mahesh Kumar"); // JAVA Boolean studentData.setVerified(Boolean.FALSE); // Array studentData.setMarks(marks); TypeReference ref = new TypeReference>() { }; userDataMap.put("studentData1", studentData); mapper.writeValue(new File("student.json"), userDataMap); //{ // "studentData1": // { // "student": // { // "name":"Mahesh", // "age":10 // }, // "name":"Mahesh Kumar", // "verified":false, // "marks":[1,2,3] // } //} userDataMap = mapper.readValue(new File("student.json"), ref); System.out.println(userDataMap.get("studentData1").getStudent()); System.out.println(userDataMap.get("studentData1").getName()); System.out.println(userDataMap.get("studentData1").getVerified()); System.out.println(Arrays.toString(userDataMap.get("studentData1").getMarks())); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class Student { private String name; private int age; public Student(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } } class UserData { private Student student; private String name; private Boolean verified; private int[] marks; public UserData(){} public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Boolean getVerified() { return verified; } public void setVerified(Boolean verified) { this.verified = verified; } public int[] getMarks() { return marks; } public void setMarks(int[] marks) { this.marks = marks; } }
出力を確認します
javac を使用して次のクラスをコンパイルします:
C:\Jackson_WORKSPACE>javac JacksonTester.java
次に、jacksonTester を実行して、結果を参照してください:
C:\Jackson_WORKSPACE>java JacksonTester
検証出力
Student [ name: Mahesh, age: 10 ] Mahesh Kumar false [1, 2, 3]
Java の Jackson ライブラリ内のオブジェクトのシリアル化とデータ ジェネリック バインディングの分析に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











Jackson は、Java オブジェクトから JSON へ、および JSON から Java オブジェクトへの変換に役立つ Java ベースのライブラリです。 JacksonAPI は他の API よりも高速で、必要なメモリ領域が少なく、大きなオブジェクトに適しています。 XmlMapper クラスの writeValueAsString() メソッドを使用して POJO を XML 形式に変換します。対応する POJO インスタンスをパラメーターとしてこのメソッドに渡す必要があります。構文 publicStringwriteValueAsString(Objectvalue)throwsJsonProcessingExceptionExampleimp

JSONJackson は Java 用のライブラリです。非常に強力なデータ バインディング機能があり、カスタム Java オブジェクトを JSON にシリアル化し、JSON を Java オブジェクトに逆シリアル化するためのフレームワークを提供します。また、XmlMapper の readValue() メソッドを使用して XML 形式を POJO オブジェクトに変換することもできます。

AJackson は、JSON を処理するためのいくつかの異なる方法を提供する Java JSON API です。 CsvMapper クラスを使用して、CSV データを JSON データに変換できます。これは、POJO を CsvSchema インスタンスに変換する拡張機能を備えた特別な ObjectMapper です。 Reader() メソッドを使用して、デフォルト設定で ObjectReader を構築できます。変換するには、com.fasterxml.jac をインポートする必要があります

[脆弱性通知] NVD は 2 月 19 日、JNDI インジェクションによって引き起こされる jackson-databind のリモート コード実行の脆弱性 (CVE-2020-8840) を公開するセキュリティ通知を発行しました (CVSS スコアは 9.8)。影響を受けるバージョンの jackson-databind には、org.apache.xbean.propertyeditor.JndiConverter などの特定の xbean-reflect/JNDI ブラックリスト クラスが欠落しているため、攻撃者が JNDI インジェクションを使用してリモート コードを実行する可能性があります。現在、メーカーは脆弱性の修復を完了した新バージョンをリリースしていますので、該当するユーザーは保護のために間に合うようにアップグレードするようお願いします。プロジェクトで使用されている S 以来

JSONObject は文字列内のテキストを解析して Map タイプのオブジェクトを生成できます。列挙型は定数のコレクションを定義するために使用でき、ある種の数値データやテキスト データを表さない事前定義された値のリストが必要な場合に列挙型を使用できます。 ObjectMapper クラスの readValue() メソッドを使用して、JSON オブジェクトを列挙に変換できます。以下の例では、Jackson ライブラリを使用して、JSON オブジェクトを Java 列挙型に変換/逆シリアル化できます。例 importcom.fasterxml.jackson.databind.*;publicclassJSONToEnumTest{&

すべての JSON パーサーのデフォルト設定は、JsonParser.Feature 列挙体を使用して表すことができます。 JsonParser.Feature.values() は、JSONParser で利用可能なすべての機能を返しますが、特定のパーサーに対して機能が有効か無効かは、JsonParser の isEnabled() メソッドを使用して判断できます。構文 publicstaticenumJsonParser.FeatureextendsEnum<JsonParser.Feature> 例 importcom.fas

@ConstructorProperties アノテーションは java.bean パッケージから取得され、アノテーション付きコンストラクターを通じて JSON を Java オブジェクトに逆シリアル化するために使用されます。このアノテーションは、Jackson 2.7 以降でサポートされています。この注釈が機能する方法は非常に簡単です。コンストラクター内の各パラメーターに注釈を付ける代わりに、各コンストラクター パラメーターのプロパティ名を含む配列を提供できます。構文@Documented@Target(value=CONSTRUCTOR)@Retention(value=RUNTIME)public@interfaceConstructorPropertiesExample impo

1. 背景:プロジェクト内の一部の機密情報(顧客の携帯電話番号、ID カード、ナンバープレート番号など)は直接表示できないため、顧客のプライバシーの漏洩を防ぐために、表示する際にデータの機密情報を解除する必要があります。非感作とは、データの一部を非感作シンボル (*) で処理することです。 2. ターゲットがサーバーからデータを返すとき、Jackson シリアル化を使用してデータの非感作を完了し、機密情報の非感作表示を実現します。繰り返しの開発量を削減し、開発効率を向上させて、統合された効果的な非感作ルールを形成します。これは、デフォルトの非感作実装を書き換える非感作手法に基づいて、スケーラブルでカスタマイズ可能なパーソナライズされたビジネス シナリオの非感作要件を実現できます。 3. 主な実装 3.1 Jackson Custom の感度を下げた StdSerializer のシリアル化実装に基づく: すべて標準
