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?
This had me stumped for a while but check this answer.
Basically, use the Json.NET attribute StringEnumConverter
.
[JsonConverter(typeof(StringEnumConverter))]
public enum Sauce
{
[EnumMember(Value = "none")]
None,
[EnumMember(Value = "hot")]
Hot
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With