作者:十一 | 来源:互联网 | 2022-12-02 17:20
我很惊讶我找不到答案,但我有一个Azure功能(HTTP触发器)我只是想将内容反序列化为一个对象.以前用V1我能做到这一点,
功能V1
[FunctionName("RequestFunction")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
// Successful deserialization of the content
var accountEvent = await req.Content.ReadAsAsync();
// Rest of the function...
}
但现在使用V2看起来更像是这样,
功能V2
[FunctionName("RequestFunction")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req, ILogger log)
{
// Content doesn't exist on HttpRequest anymore so this line doesn't compile
var accountEvent = await req.Content.ReadAsAsync();
// Rest of the function...
}
我可以让主体从HttpRequest对象访问流,但我不确定如何将其转换为预期的对象.有任何想法吗?
1> maccettura..:
API发生了一些变化.你已经看到Content
不再存在了.但是,您仍然可以通过使用Microsoft.Azure.WebJobs.Extensions.Http
命名空间中包含的扩展方法(应该已作为依赖项包含)来获得相同的功能:
string json = await req.ReadAsStringAsync();
您可以在此处查看此扩展方法的来源
然后你将使用Json.NET反序列化(Json.NET也已经是一个依赖)
var someModel = JsonConvert.DeserializeObject(json);