カスタムJSONスカラータイプを作成するには、以下の手順に従います。
- GraphQLのスキーマ定義で、カスタムスカラータイプを定義します。例えば、"JSON"という名前で新しいスカラータイプを作成します。
scalar JSON
- カスタムスカラータイプのシリアライズとデシリアライズのロジックを実装します。これには、GraphQLの
GraphQLScalarType
を拡張するクラスを作成し、serialize
とparseValue
メソッドをオーバーライドします。以下は、JavaScriptの例です。
const { GraphQLScalarType, Kind } = require('graphql');
const JSONScalar = new GraphQLScalarType({
name: 'JSON',
serialize(value) {
// JSONオブジェクトを文字列にシリアライズするロジック
return JSON.stringify(value);
},
parseValue(value) {
// 文字列をJSONオブジェクトにデシリアライズするロジック
return JSON.parse(value);
},
parseLiteral(ast) {
if (ast.kind === Kind.STRING) {
// 文字列をJSONオブジェクトにデシリアライズするロジック
return JSON.parse(ast.value);
}
return null;
},
});
- カスタムスカラータイプをスキーマの該当するフィールドで使用します。以下は、スキーマ定義の例です。
type MyObjectType {
id: ID!
data: JSON
}
これで、MyObjectType
のdata
フィールドにJSONデータを扱えるようになります。
以上が、GraphQLでカスタムJSONスカラータイプを作成する方法の概要です。この方法を使って、JSONデータを扱うGraphQLスキーマを柔軟に定義することができます。