C# 自定义ASP.NET Web API输出

C# 自定义ASP.NET Web API输出,c#,asp.net-mvc,serialization,asp.net-mvc-4,asp.net-web-api,C#,Asp.net Mvc,Serialization,Asp.net Mvc 4,Asp.net Web Api,如何自定义ASP.NET Web API的序列化输出 比方说,我希望所有值都是大写。您可以访问JSON.NET序列化程序设置。使用JSON.NET,您可以使用转换器覆盖转换,例如 您还可以通过从抽象JsonConverter继承来实现自己的。有关详细信息,请参阅 对于您的示例,创建转换器: public class UpperCaseStringConverter : JsonConverter { public override bool CanConvert(Type objectT

如何自定义ASP.NET Web API的序列化输出


比方说,我希望所有值都是大写。

您可以访问JSON.NET序列化程序设置。使用JSON.NET,您可以使用转换器覆盖转换,例如

您还可以通过从抽象JsonConverter继承来实现自己的。有关详细信息,请参阅

对于您的示例,创建转换器:

public class UpperCaseStringConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(string);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return reader.Value.ToString();
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var outputValue = value as string;
        writer.WriteValue(outputValue == null ? null : outputValue.ToUpper());
    }
}
[JsonConverter(typeof(UpperCaseStringConverter))]
然后要全局注册此配置,请添加此配置:

public class UpperCaseStringConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(string);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return reader.Value.ToString();
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var outputValue = value as string;
        writer.WriteValue(outputValue == null ? null : outputValue.ToUpper());
    }
}
[JsonConverter(typeof(UpperCaseStringConverter))]
来自的注册示例

要添加到模型上的单个属性,只需添加注释:

public class UpperCaseStringConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(string);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return reader.Value.ToString();
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var outputValue = value as string;
        writer.WriteValue(outputValue == null ? null : outputValue.ToUpper());
    }
}
[JsonConverter(typeof(UpperCaseStringConverter))]

完美答案。谢谢你!