区块链技术博客
www.b2bchain.cn

如何将Web API十进制结果格式设置为两位小数 – c#程序员分享

本文介绍了如何将Web API十进制结果格式设置为两位小数 – c#程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

如何将Web API十进制结果格式设置为两个十进制空格?

我有一个Web API方法,应该返回数字“ 15321.39”。
但是返回的值为15321.3900

我的代码示例是:

    [Route("GetDecimalValue")]     [ResponseType(typeof(decimal))]     [HttpGet]     public IHttpActionResult GetDecimal()     {         try         {             decimal result = GetMyNumber(); // returns number such as 15321.39              return Ok(result);         }          catch (Exception ex)         {             return InternalServerError(ex);         }     }   public decimal GetMyNumber(){    return 15321.39m } 

请注意,我不想更改返回类型

参考方案

您可以尝试使用自定义实现替换默认格式器(在您的情况下为JsonFormatter)十进制类型。这是全局性应用的,对于每个小数,您都将用作任何NegotiatedContentResult的参数(例如,它将对您示例中的Ok方法开箱即用)。

首先创建一个新的MediaTypeFormatter:

public class MyDecimalFormatter : MediaTypeFormatter {     public MyDecimalFormatter()     {         SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));         SupportedEncodings.Add(Encoding.UTF8);     }      public override bool CanReadType(Type type)     {         return false;     }      public override bool CanWriteType(Type type)     {         return type == typeof(decimal);     }      public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content,         TransportContext transportContext)     {         var decimalValue = (decimal)value;          var formatted = decimalValue.ToString("F2", CultureInfo.InvariantCulture);          using (var writer = new StreamWriter(writeStream))         {             writer.Write(formatted);         }          return Task.FromResult(0);     } } 

然后将其首先添加到Web Api配置中的formatters集合中:

config.Formatters.Insert(0, new MyDecimalFormatter()); 

您可以在WebApiConfig.cs Register方法内或Global.asax / Startup.cs中添加此行。

此方法与result.ToString()之间的区别

在动作中仅使用.ToString()

行动:

//.. decimal result = GetMyNumber(); return Ok(result.ToString("F2")); //Ok receives a string as argument 

HTTP响应正文:

"15321.39" //This is a JSON string, not a number 

使用自定义MediaTypeFormatter

行动:

//.. decimal result = GetMyNumber(); return Ok(result); //Ok recives a decimal as argument 

HTTP响应正文:

15321.39 //This is a JSON number 

我正在使用Retrofit来获取JSON答复。这是我实施的一部分("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": &#03…

我正在使用Wiremock在Spring启动应用程序中模拟Junit的REST服务。我的问题是,我无法匹配多个匹配模式。 Junit.javaStringValuePattern pattern = WireMock.matching(".*"); givenThat(post(urlEqualTo("/softwares&#0…

我有一个php函数,它以JSON返回此代码{"0":{"title":"Dans lu2019appartement"},"1":{"title":"A lu2019au00e9roport – Du00e9part de Bu00e9at…

尝试使用C#从嵌入式MongoDB文档中获取确切的子文档及其对应的父文档,但查询返回所有子文档以及对应的父文档和其他文档。如何将参数设置为使用Filter和findOptions获得完全匹配。我的预期结果是频道1->第1集,并且是给定ID的Child Track。这是我的代码:// Class namespace CrudWithMultilvelNe…

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 如何将Web API十进制结果格式设置为两位小数 – c#程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们