我正在使用JsonConvert.SerializeObject序列化模型对象。服务器希望所有字段都为字符串。我的模型对象具有数字属性和字符串属性。我无法将属性添加到模型对象。有没有一种方法可以将所有属性值序列化为字符串?我必须仅支持序列化,而不支持反序列化。
您JsonConverter甚至可以为数字类型提供自己的数字。我只是想这和它的作品- 它的快速和肮脏的,你几乎肯定希望把它扩大到支持其他数字类型(long,float,double,decimal等),但它应该让你去:
JsonConverter
long
float
double
decimal
using System; using System.Globalization; using Newtonsoft.Json; public class Model { public int Count { get; set; } public string Text { get; set; } } internal sealed class FormatNumbersAsTextConverter : JsonConverter { public override bool CanRead => false; public override bool CanWrite => true; public override bool CanConvert(Type type) => type == typeof(int); public override void WriteJson( JsonWriter writer, object value, JsonSerializer serializer) { int number = (int) value; writer.WriteValue(number.ToString(CultureInfo.InvariantCulture)); } public override object ReadJson( JsonReader reader, Type type, object existingValue, JsonSerializer serializer) { throw new NotSupportedException(); } } class Program { static void Main(string[] args) { var model = new Model { Count = 10, Text = "hello" }; var settings = new JsonSerializerSettings { Converters = { new FormatNumbersAsTextConverter() } }; Console.WriteLine(JsonConvert.SerializeObject(model, settings)); } }