Skip to content
Advertisement

How to use Netflix DGS graphql-dgs-extended-scalars JSON scalar (java/spring-boot, maven)?

I ran into the issue where I wanted to use graphql-dgs-extended-scalars, specifically the JSON scalar, but had trouble finding a clear tutorial on how to do it. I’m sure they’re out there, but just in case someone finds themselves in the same situation as me hopefully my simple explanation below will save them some time.

Advertisement

Answer

Installation

In pom file (maven specific)

<dependency>
    <groupId>com.netflix.graphql.dgs</groupId>
    <artifactId>graphql-dgs-extended-scalars</artifactId>
    <version>${netflix.graphql.dgs.version}</version>
</dependency>

In configuration file (eg, application.yml)

dgs:
  graphql:
    extensions:
      scalars:
        objects:
          enabled: true

Using the scalar (JSON in this case)

In the schema

...
 
type SomeType {
    thing: JSON!
}
 
...
 
input SomeTypeInput {
    thing: JSON!
}
 
...
 
scalar JSON

In the class that will be used as your input to the datafetcher

public class SomethingDTO
{
 
    /**
     * This does not have to be a Map, you could use another
     * reasonable object like JSONObject, etc.
     */
    public Map<String, Object> thing;
 
}

You can then pass in as an argument a json formatted object in your query of arbitrary shape.

This was just for the JSON scalar, but the pattern follows for most (all?) the other scalars found in the lib.

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement