我想强迫newtonsoft.json的 JsonConvert.SerializeObject
始终威胁bool值作为字符串: "true"
and "false"
。
我知道 JsonConvert
是静态类,我可能应该写一个类似这样的扩展方法:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings {}
但是说实话,我不知道该怎么做,也不知道如何将其实施到我的方法中:
public static string Serialize(Foo fooData)
{
return JsonConvert.SerializeObject(fooData);
}
我会感谢任何建议。
您可以做一个简单的JsonConverter
来做到这一点:
public class BoolToStringConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(bool);
}
public override bool CanRead
{
get { return false; }
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue((bool)value ? "true" : "false");
}
}
然后这样使用:
JsonSerializerSettings settings = new JsonSerializerSettings
{
Converters = new List<JsonConverter> { new BoolToStringConverter() },
Formatting = Formatting.Indented
};
var json = JsonConvert.SerializeObject(obj, settings);
演示:https://dotnetfiddle.net/aeo1hg