在Graphql和JSON中都没有标准来表示NaN和INFINITY。
在 JavaScript 中,JSON.stringify(0/0)
和JSON.stringify(1/0)
将只返回字符串null
。
当我提供支持 Java 的 GraphQL 端点时,它不会造成什么麻烦。我的值可以是 Java 中的任何有效Double
。
@GraphQLQuery
private Double precentage;
我几乎没有解决方法,我可以在我正在做的二传器中修补它。 只是想知道是否有一个事实上的标准以更好的方式处理它。
我也在某个时候考虑过这个问题...... 目前的情况是Double
(Java 类型(映射到 GraphQLFloat
标量,它不能表示NaN
或无穷大。 你可以做的是实现你自己的标量(例如,称为Double
(,并决定如何处理这些特殊情况(使用现有的标量实现作为准则(。也许使用像NaN
、+Infinity
、-Infinity
这样的字符串?最糟糕的部分是你确定的任何约定,客户端也需要意识到它,因为JSON也没有这些值的表示形式。
一旦你有一个你满意的自定义标量,你就可以实现一个超级简单的TypeMapper
,它支持Double
(Java 类型(并返回这个新的标量。
或者回答你最初的问题 - 不,不幸的是,在graphql-java或SPQR中还没有开箱即用的东西。但是我很高兴扩展 SPQR 的自定义标量来处理这个问题......如果你想出一个好的策略,请通知我。