全部,尝试创建一个自定义的 JsonConverter,它在序列化为 Json 时根据作为参数传递的文化更改小数分隔符(类似于this)。
示例控制台应用程序:
using System;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Globalization;
namespace TestJsonConverter
{
class Program
{
class FormattedDecimalConverter : JsonConverter
{
private CultureInfo cultureinput;
public FormattedDecimalConverter(CultureInfo culture)
{
this.cultureinput = culture;
}
public override bool CanConvert(Type objectType)
{
return (
objectType == typeof(decimal) ||
objectType == typeof(double) ||
objectType == typeof(float));
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var strValue = Convert.ToString(value, cultureinput);//String
var doublevalue = Convert.ToDouble(strValue, cultureinput);//ConvertToDouble
double doublevalueusingparse;
Double.TryParse(strValue, NumberStyles.Any, cultureinput, out doublevalueusingparse);//TryParseToDouble
writer.WriteValue(strValue);
writer.WriteValue(doublevalue);
writer.WriteValue(doublevalueusingparse);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
static void Main(string[] args)
{
List<double> values = new List<double> { 1.02 };
var converter = new FormattedDecimalConverter(CultureInfo.GetCultureInfo("nl-BE"));
string json = JsonConvert.SerializeObject(values, converter);
Console.WriteLine(json);
Console.ReadLine();
}
}
}
产生以下输出:
["1,02",1.02,1.02]
问题:如何在将值写入双精度值时保留逗号分隔符?写入字符串会产生一个逗号,但在写入双倍时,它的作者会带有句点。
提前致谢