在 graphql-spqr 中的双精度值中对 NaN 进行建模



在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 的自定义标量来处理这个问题......如果你想出一个好的策略,请通知我。

相关内容

  • 没有找到相关文章

最新更新