ホームページ Java &#&チュートリアル Java の Jackson ライブラリ内のオブジェクトのシリアル化とデータ ジェネリック バインディングを分析します。

Java の Jackson ライブラリ内のオブジェクトのシリアル化とデータ ジェネリック バインディングを分析します。

Jan 18, 2017 am 10:48 AM
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 サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JavaのJacksonライブラリを使用してPOJOをXMLに変換しますか? JavaのJacksonライブラリを使用してPOJOをXMLに変換しますか? Sep 18, 2023 pm 02:21 PM

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

JavaのJacksonライブラリを使用してXMLをPOJOに変換しますか? JavaのJacksonライブラリを使用してXMLをPOJOに変換しますか? Aug 30, 2023 am 10:21 AM

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

JavaのJacksonライブラリを使用してCSVをJSONに変換しますか? JavaのJacksonライブラリを使用してCSVをJSONに変換しますか? Aug 18, 2023 pm 11:49 PM

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

SpringBootアップグレードでジャクソンバージョンを指定する問題を解決する方法 SpringBootアップグレードでジャクソンバージョンを指定する問題を解決する方法 May 12, 2023 pm 02:13 PM

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

Jackson を使用して Java で JSON オブジェクトを enum 型に変換するにはどうすればよいですか? Jackson を使用して Java で JSON オブジェクトを enum 型に変換するにはどうすればよいですか? Sep 05, 2023 pm 12:13 PM

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

Java で Jackson を使用して JSONParser のデフォルト設定を取得するにはどうすればよいですか? Java で Jackson を使用して JSONParser のデフォルト設定を取得するにはどうすればよいですか? Sep 12, 2023 am 11:57 AM

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

Java で Jackson を使用する場合、 @ConstructorProperties アノテーションをいつ使用するか? Java で Jackson を使用する場合、 @ConstructorProperties アノテーションをいつ使用するか? Aug 27, 2023 pm 08:53 PM

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

Jackson シリアル化を使用して Java でデータの非感作を実現する方法 Jackson シリアル化を使用して Java でデータの非感作を実現する方法 Apr 18, 2023 am 09:46 AM

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

See all articles