0

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

问题:如何在将值写入双精度值时保留逗号分隔符?写入字符串会产生一个逗号,但在写入双倍时,它的作者会带有句点。
提前致谢

4

1 回答 1

0

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

于 2020-09-21T19:13:23.637 回答