Java-Jacksonの詳細な使用

 
 

Java-Jacksonの詳細な使用

シリアル化

Jsonとは何ですか?

1.基本ルール

2.データを取得する

3.目的

ジャクソン

1.Jarパッケージをインポートします

2.Jsonアノテーション

3.JsonがJavaオブジェクトに変換されました

4.Javaオブジェクト変換Json


シリアル化

シリアル化は、オブジェクトの状態情報を保存または送信できる形式に変換するプロセスです。シリアル化中に、オブジェクトは現在の状態を一時ストレージまたは永続ストレージに書き込みます。後で、ストレージ領域からオブジェクトの状態を読み取るか逆シリアル化することにより、オブジェクトを再作成できます。

Jsonとは何ですか?

JasonはJavaScriptObject Notation —軽量のデータ交換フォーマットであるJavaScriptオブジェクト表記です。これは主にデータ送信に使用されます。たとえば、バックエンドでJavaオブジェクトを作成する場合、このオブジェクトを他の場所(フロントエンド)で使用する場合は、送信のためにJsonに変換する必要があります。

1.基本ルール

  データは名前と値のペアになっています:jsonデータはキーと値のペアで構成されています

     値を引用符で囲むかどうか

     値のタイプ:数値、文字列、ブール値、配列({"persons":[{}、{}、{}]}など)、オブジェクト、null

     データはコンマで区切られます:複数のキーと値のペアはコンマで区切られます

     角括弧は配列を保存します:[]

     オブジェクトを保存するための中括弧:{}を使用してjson形式を定義します

2.データを取得する

    jsonオブジェクト。キー名

    jsonオブジェクト["キー名"]

    配列オブジェクト[インデックス]

    トラバース

3.目的

   カスタムオブジェクトを何らかのストレージ形式で永続的にします。

   ある場所から別の場所にオブジェクトを渡します。

   プログラムをより保守しやすくします。


ジャクソン

Javaエコシステムには、JSONおよびXMLフォーマットを処理する多くのライブラリ、一般的なパーサーがあります:Jsonlib、Gson、fastjson、Jackson。ジャクソンは、最も有名で便利なものの1つです。、Jacksonは比較的効率的です。Jacksonは主にプロジェクトでJSONオブジェクトとJavaオブジェクトを変換するために使用されます。JacksonJSONの操作方法をいくつか示します。

1.Jarパッケージをインポートします

2.Jsonアノテーション

@JsonIgnoreこのアノテーションは属性に使用され、関数はJSON操作を実行するときに属性を無視することです。

@JsonFormatこのアノテーションは属性に使用され、その機能は、Date型を@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")などの目的の形式に直接変換することです。

@JsonPropertyこのアノテーションはプロパティで使用され、trueNameプロパティをname、@ JsonProperty( "name")にシリアル化するなど、プロパティの名前を別の名前にシリアル化する役割があります。

public class Person {

    private String name;
    private int age;
     @JsonProperty("gender")
    private String gender;

   // @JsonIgnore//忽略该属性,不进行转换
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    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 getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}

3.JsonがJavaオブジェクトに変換されました

ジャクソンの関連するjarパッケージをインポートします

JacksonのコアオブジェクトであるObjectMapperを作成します

データ変換のためにObjectMapperの関連メソッドを呼び出します-Json文字列をJavaオブジェクトに変換します

          readValue(json文字列データ、class.Class)

//将Json字符串转为Java对象
    @Test
    public  void  test5() throws Exception{
        //json字符串
        String str="{\"gender\":\"男\",\"name\":\"zhangsan\",\"age\":23}";
        //Jackson核心对象
        ObjectMapper mapper = new ObjectMapper();
        //使用readValue方法进行转换
        Person person = mapper.readValue(str, Person.class);
        System.out.println(person);
    }

4.Javaオブジェクト変換Json

ジャクソンの関連するjarパッケージをインポートします

JacksonのコアオブジェクトであるObjectMapperを作成します

データ変換のためにObjectMapperの関連メソッドを呼び出す-JavaオブジェクトをJsonに変換する

        writeValue(パラメータ、objオブジェクト)

               パラメータ:ファイル:objオブジェクトをJSON文字列に変換し、指定したファイルに保存します

               パラメーター:ライター:objオブジェクトをJSON文字列に変換し、jsonデータを文字出力ストリームに入力します

               パラメータ:OutputStream:objオブジェクトをJSON文字列に変換し、jsonデータをバイト出力ストリームに入力します

        writeValueAsString(obj):オブジェクトをjson文字列に変換します(一般的に使用されます)

 //Java对象转Json
    @Test
    public void test1() throws IOException {

        //1.创建Java对象
        Person p=new Person();
        p.setName("张三");
        p.setAge(23);
        p.setGender("男");

        //2.创建Jackson对象 ObjectMapper
        ObjectMapper mapper=new ObjectMapper();
        //3.转换为JSOn
        String json = mapper.writeValueAsString(p);
        System.out.println(json);
        mapper.writeValue(new File("d:\\jaon.txt"),json);
        mapper.writeValue(new FileWriter("d:\\json.txt"),json);
    }


    @Test
    public void test2() throws JsonProcessingException {

        //1.创建Java对象
        Person p = new Person();
        p.setName("张三");
        p.setAge(23);
        p.setGender("男");
        p.setBirthday(new Date());
        //2.创建Jackson对象 ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //3.转换为JSOn
        String json = mapper.writeValueAsString(p);
        System.out.println(json);
    }


    @Test
    public void test3() throws Exception {
        //复杂格式的转换:list
        //1.创建Java对象
        Person p1 = new Person();
        p1.setName("张三");
        p1.setAge(23);
        p1.setGender("男");
        p1.setBirthday(new Date());

        Person p2 = new Person();
        p2.setName("张三");
        p2.setAge(23);
        p2.setGender("男");
        p2.setBirthday(new Date());

        List<Person> list=new ArrayList<>();
        list.add(p1);
        list.add(p1);
   
        //2.创建Jackson对象 ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //3.转换为JSOn
        String json = mapper.writeValueAsString(list);
        System.out.println(json);//[{"name":"张三","age":23,"gender":"男","birthday":"2021-03-19"},{"name":"张三","age":23,"gender":"男","birthday":"2021-03-19"}]

    }

    @Test
    public  void   test4() throws Exception{
        //复杂格式的转换Map
        //1.创建map对象
        Map<String,Object> map=new HashMap<>();
        map.put("name","zhangsan");
        map.put("age",23);
        map.put("gender","男");
        //2.创建Jackson对象 ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //3.转换为JSOn
        String json = mapper.writeValueAsString(map);
        System.out.println(json);//{"gender":"男","name":"zhangsan","age":23}
    }

作成するのは簡単ではありません。このブログがお役に立てば、メッセージを残してください+いいね!    

 

 

おすすめ

転載: blog.csdn.net/promsing/article/details/114986873