What is graphql-type-json?
The graphql-type-json npm package provides a way to include JSON objects as a GraphQL type. It allows for the use of arbitrary JSON objects as input or output types within a GraphQL schema, which can be useful when the shape of the data is not known in advance or when a flexible data structure is required.
What are graphql-type-json's main functionalities?
JSON scalar type for GraphQL schema
This feature allows you to use JSON as a scalar type in your GraphQL schema. You can define a field to accept or return a JSON object without specifying its structure in advance.
{"GraphQLJSON": require('graphql-type-json').GraphQLJSON}
Using JSON type in GraphQL queries and mutations
With graphql-type-json, you can define query and mutation fields that accept or return JSON objects. This is useful for endpoints that deal with dynamic or unstructured data.
{"typeDefs": "type Query { getArbitraryData: JSON } type Mutation { submitArbitraryData(data: JSON): Boolean }"}
Other packages similar to graphql-type-json
graphql-scalars
This package includes a collection of custom GraphQL scalar types, including a JSON type similar to graphql-type-json. It offers a wider range of scalars for different use cases, such as Date, Time, DateTime, EmailAddress, and more.
graphql-tools-types
Similar to graphql-type-json, graphql-tools-types provides additional types for GraphQL, including a JSON type. It also includes other types like Void, Regex, and more, which can be useful for extending the capabilities of a GraphQL schema.
graphql-type-json

JSON scalar types for GraphQL.js.

Usage
This package exports a JSON value scalar GraphQL.js type:
import GraphQLJSON from 'graphql-type-json';
It also exports a JSON object scalar type:
import { GraphQLJSONObject } from 'graphql-type-json';
These types can also be imported as follows using CommonJS:
const { GraphQLJSON, GraphQLJSONObject } = require('graphql-type-json');
GraphQLJSON
can represent any JSON-serializable value, including scalars, arrays, and objects. GraphQLJSONObject
represents specifically JSON objects, which covers many practical use cases for JSON scalars.
Programmatically-constructed schemas
You can use this in a programmatically-constructed schema as with any other scalar type:
import GraphQLJSON, { GraphQLJSONObject } from 'graphql-type-json';
export default new GraphQLObjectType({
name: 'MyType',
fields: {
myValue: { type: GraphQLJSON },
myObject: { type: GraphQLJSONObject },
},
});
When using the SDL with GraphQL-tools, define GraphQLJSON
as the resolver for the appropriate scalar type in your schema:
import { makeExecutableSchema } from 'graphql-tools';
import GraphQLJSON, { GraphQLJSONObject } from 'graphql-type-json';
const typeDefs = `
scalar JSON
scalar JSONObject
type MyType {
myValue: JSON
myObject: JSONObject
}
# ...
`;
const resolvers = {
JSON: GraphQLJSON,
JSONObject: GraphQLJSONObject,
};
export default makeExecutableSchema({ typeDefs, resolvers });