0

GraphqlJSON中都没有表示NaNINFINITY的标准。

在 JavaScript 中,JSON.stringify(0/0)只会JSON.stringify(1/0)返回 string null

当我提供支持 Java 的 GraphQL 端点时,它几乎不会引起任何麻烦。Double我的值在 Java 中可以是任何有效的。

    @GraphQLQuery
    private Double precentage;

我几乎没有解决方法,我可以在我正在做的设置器中修补它。只是想知道是否有事实上的标准以更好的方式处理它。

4

1 回答 1

0

我在某个时候也在考虑这个问题......目前的情况是Double(Java 类型)被映射到 GraphQLFloat标量,它不能表示NaN或无穷大。您可以做的是实现自己的标量(称为 eg Double)并决定如何处理这些特殊情况(使用现有的标量实现作为指导)。也许使用像NaN, +Infinity, -Infinity? 最糟糕的部分是您选择的任何约定,客户端也需要了解它,因为 JSON 也没有这些值的表示。

一旦你有一个你满意的自定义标量,你就可以实现一个TypeMapper支持Double(Java 类型)并返回这个新标量的超级简单。

或者回答您最初的问题 - 不,不幸的是,graphql-java 或 SPQR 中都没有现成的东西。但我很高兴扩展 SPQR 的自定义标量来处理这个问题……如果你想出了一个好的策略,请联系我。

于 2019-09-04T00:12:21.887 回答