Newtonsoft.Json C#CustomJsonConverter-根据传递的文化替换双分隔符

问题描述

全部,尝试创建一个自定义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]

问题:在将值写为double时如何保留逗号分隔符?编写字符串会产生逗号,但同时写两倍的带有句点的作者。
预先感谢

解决方法

由于在Json中用逗号传递双精度值会导致无效的Json,因此更好的选择是将双精度值作为字符串传输,例如{“ Sample”:{“ Text”:“ Sample”,“ Double “:” 10,12“}}或使用句点转移。将在此处选择字符串选项。感谢您所做的所有澄清。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...