如何处理 .NET 生成的 JSON 中的 Infinity

发布于 2024-12-13 15:44:21 字数 170 浏览 2 评论 0原文

.NET Json 序列化程序将 Double.PositiveInfinity 等序列化为 Infinity 之类的内容,这些内容不是有效的 JSON。我现在尝试使用 Json.NET 将对象序列化为 JSON,但我想对其进行包装,以便将 Infinity 等值转换为 NULL 或字符串“Infinity”。我该怎么做呢?

The .NET Json serializer serializes Double.PositiveInfinity and the like to things like Infinity, which aren't valid JSON. I'm now trying to use Json.NET to serialize an object to JSON, but I'd like to wrap it so that values like Infinity get converted to NULL, or the string "Infinity". How do I go about doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光礼记 2024-12-20 15:44:21

执行此操作的唯一方法是将 Double 值序列化为自定义类型,该类型在值之上提供信息。例如,

{
  'isInfinity': 'true',
  'isNan': 'false'
  'value': '0' };

通过使用包装类型来处理 Double 值可以很容易地完成

[DataContract]
public sealed class DoubleWrapper { 
  [DataMember]
  public bool isInfinity;

  [DataMember]
  public bool isNaN;

  [DataMember]
  public double value;

  public DoubleWrapper(double p) {
    isInfinity = Double.IsInfinity(p);
    isNaN = Double.IsNaN(p);
    value = p;
  }
}

The only way to do this is to serialize Double values as a custom type which provide information on top of the value. For example

{
  'isInfinity': 'true',
  'isNan': 'false'
  'value': '0' };

This can be done pretty easily by using a wrapper type to handle Double values

[DataContract]
public sealed class DoubleWrapper { 
  [DataMember]
  public bool isInfinity;

  [DataMember]
  public bool isNaN;

  [DataMember]
  public double value;

  public DoubleWrapper(double p) {
    isInfinity = Double.IsInfinity(p);
    isNaN = Double.IsNaN(p);
    value = p;
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文