Serialize enum as string in JSON returned from Azure Function

Viewed 2435

Is there a way to configure how Azure Functions serializes an object into JSON for the return value? I would like to use strings rather than ints for enum values.

For instance, given this code:-

public enum Sauce
{
    None,
    Hot
}

public class Dish
{
    [JsonConverter(typeof(StringEnumConverter))]
    public Sauce Sauce;
}

public static class MyFunction
{
    [FunctionName("MakeDinner")]
    public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
    {
        var dish = new Dish() { Sauce = Sauce.Hot };
        return req.CreateResponse(HttpStatusCode.OK, dish, "application/json");
    }
}

The function returns:-

{
   "Sauce": 1
}

How can I make it return the below?

{
   "Sauce": "Hot"
}

I've tried returning a string instead of an object, but the result contains \" escapes; I want a JSON result, not an escaped string representation of a JSON object.

I know that in standard ASP.NET I can use the config to set serialization options. Is this even possible in Functions, or should I convert all my Enums to string constants?

2 Answers
Related