繁体   English   中英

.NET 5 - Json 以逗号作为小数点分隔符的序列化

[英].NET 5 - Json Serialization with comma as decimal separator

考虑到当前语言环境,有没有办法在 controller 中序列化 JsonResult? 在我的例子中,当语言设置为意大利语时,我希望十进制值的分隔符是“,”而不是“。”。

JsonDataTable<SomeObj> res = new JsonDataTable<SomeObj>(someObjList);

return new JsonResult(res);

这是特定于文化的十进制转换器的示例 - 从此处复制:

using System.Text.Json;
using System.Text.Json.Serialization;

public class CultureSpecificQuotedDecimalConverter : JsonConverter<decimal>
{
    public override decimal Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        if (reader.TokenType == JsonTokenType.String)
        {
            return Convert.ToDecimal(reader.GetString(),   System.Globalization.CultureInfo.GetCultureInfo("es-ES"));
        }
        else
        {
            return reader.GetInt32();
        }
    }

    //Write() not shown
}

像这样使用:

using System.Text.Json;

var jsonOptions = new JsonSerializerOptions();
jsonOptions.Converters.Add(new CultureSpecificQuotedDecimalConverter());

var movie = JsonSerializer.Deserialize<Movie>(movieJson, jsonOptions);

Console.WriteLine($"Year={movie.YearReleased} Revenue={movie.Revenue}");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM