数値型の場合でも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));
}
}
http://stackoverflow.com/questions/37475997/convert-int-to-string-while-serialize-object-using-json-net –
@CodeJoy:それはかなりDataTableに焦点を当てているようです - 私は見ることができませんどのようにそれらの答えがOPに役立つだろうか。 –
[長い番号をシリアル化の文字列として変換](https://stackoverflow.com/questions/17369278/convert-long-number-as-string-in-the-serialization)を参照してください。 – dbc