Почему строка с нулевым значением возвращается как java.lang.Object @.? - PullRequest
0 голосов
/ 30 октября 2019

Насколько я понимаю, значение null является приемлемым значением в ответе graphql. Поэтому я должен либо что-то неправильно понять, либо я делаю что-то в корне неправильно, потому что теперь я получаю «java.lang.Object@7deb1b9» вместо нуля.

schema {
  query: Query
}

type Query {
  greeting: String
}

Graphql выглядит так:

        final Builder vContextBuilder = new Builder()
                .of("locale", mLocale)
                .of("securityContext", mSecurityContext);

        final ExecutionInput vExecutionInput = ExecutionInput
                .newExecutionInput()
                .query(mQuery)
                .context(vContextBuilder)
                .build();

        final InputStream vSchemaInputStream = Thread
                .currentThread()
                .getContextClassLoader()
                .getResourceAsStream(SCHEMA_FILE_URI);

        final TypeDefinitionRegistry vTypeDefinitionRegistry = new SchemaParser()
                .parse(new InputStreamReader(vSchemaInputStream));

        final RuntimeWiring vRuntimeWiring = RuntimeWiring.newRuntimeWiring()
                .type("Query", typeWiring -> typeWiring
                        .dataFetcher("greeting", new GreetingFetcher())
                        )
                .build();

        final GraphQLSchema vGraphQLSchema = new SchemaGenerator()
                .makeExecutableSchema(vTypeDefinitionRegistry, vRuntimeWiring);

        final GraphQL vGraphQL = GraphQL.newGraphQL(vGraphQLSchema)
                .build();

        final ExecutionResult vExecutionResult = vGraphQL.execute(vExecutionInput);

        final Map<String, Object> toSpecificationResult = vExecutionResult.toSpecification();

И Приветствие:

public class GreetingFetcher extends StaticDataFetcher {

    public GreetingFetcher() {
        super("Hello!");
        //super(null);
    }
}

Запрос:

query {
  greeting
}

Ответ от super("Hello!");:

{
    "data": {
        "greeting": "Hello!"
    }
}

Ответ от super(null);:

{
    "data": {
        "greeting": "java.lang.Object@7deb1b9"
    }
}

Разве ответ не должен быть:

{
    "data": {
        "greeting": null
    }
}

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 01 ноября 2019

Проблема была с импортом. Затмение добавило import graphql.nextgen.GraphQL;, когда я изменил это на import graphql.GraphQL; все работало нормально.

...