Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでJacksonを使用してJSONスキーマを生成する方法

JSON Schema(JSONスキーマ)は、JSONデータの構造を定義するための仕様です。JsonSchema クラスは、特定のアプリケーションがどのようなJSONデータを必要とし、それとどうやり取りすべきかという「契約(コントラクト)」を提供できます。また、JsonSchema を使うことで、JSONデータに対するバリデーション(検証)ドキュメント化ハイパーリンクナビゲーションインタラクション制御などを定義することも可能です。

JSONスキーマを生成するには、JsonSchemaGenerator クラスの generateSchema() メソッドを使用します。このクラスは、JSONスキーマの生成機能をラップしたユーティリティです。

構文

public JsonSchema generateSchema(Class<T> type) throws com.fasterxml.jackson.databind.JsonMappingException

使用例

以下は、Person クラスと Address クラスからJSONスキーマを生成するサンプルコードです。

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator;
import java.util.List;

public class JSONSchemaTest {
    public static void main(String[] args) throws JsonProcessingException {
        ObjectMapper jacksonObjectMapper = new ObjectMapper();
        JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(jacksonObjectMapper);
        JsonSchema schema = schemaGen.generateSchema(Person.class);
        String schemaString = jacksonObjectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
        System.out.println(schemaString);
    }
}

// Personクラス
class Person {
    private String name;
    private int age;
    private List<String> courses;
    private Address address;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public List<String> getCourse() {
        return courses;
    }

    public Address getAddress() {
        return address;
    }
}

// Addressクラス
class Address {
    private String firstLine;
    private String secondLine;
    private String thirdLine;

    public String getFirstLine() {
        return firstLine;
    }

    public String getSecondLine() {
        return secondLine;
    }

    public String getThirdLine() {
        return thirdLine;
    }
}

実行結果

上記のコードを実行すると、以下のようなJSONスキーマが出力されます。各フィールドの型が自動的に判定され、ネストされたオブジェクトや配列も正しく表現されていることがわかります。

{
    "type" : "object",
    "id" : "urn:jsonschema:Person",
    "properties" : {
        "name" : {
            "type" : "string"
        },
        "age" : {
            "type" : "integer"
        },
        "address" : {
            "type" : "object",
            "id" : "urn:jsonschema:Address",
            "properties" : {
                "firstLine" : {
                    "type" : "string"
                },
                "secondLine" : {
                    "type" : "string"
                },
                "thirdLine" : {
                    "type" : "string"
                }
            }
        },
        "course" : {
            "type" : "array",
            "items" : {
                "type" : "string"
            }
        }
    }
}

  1. JacksonライブラリでJSONを見やすく整形する方法(Java Pretty Print入門)

    Jackson APIは、JavaオブジェクトをJSONに変換したり、その逆にJSONをJavaオブジェクトへ変換したりできる、Javaベースの人気ライブラリです。他のAPIと比較して処理速度が速く、メモリ消費も少ないため、大きなオブジェクトを扱う場合にも適しています。Jacksonでは、Streaming API、Tree Model、Data Bindingの3つの方式でJSONを処理できます。 JSONを読みやすい形式で出力する(Pretty Print)には、ObjectMapperクラスのwriterWithDefaultPrettyPrinter()メソッドを使用します。このファク

  2. JavaのJacksonライブラリでJSONとMapを相互変換する方法

    JacksonはJava向けの高性能なJSON処理ライブラリで、強力なデータバインディング機能を備えています。カスタムJavaオブジェクトをJSONにシリアライズしたり、JSONをJavaオブジェクトにデシリアライズしたりするためのフレームワークを提供します。JSONとMapの相互変換には、com.fasterxml.jackson.databind.ObjectMapperクラスが提供するreadValue()メソッドとwriteValueAsString()メソッドを使用します。事前準備:Maven依存関係の追加Jacksonを使用するには、まずプロジェクトに依存関係を追加します。Mave