如何在Azure函数中解析Json

如何在Azure函数中解析Json,json,azure,azure-functions,Json,Azure,Azure Functions,“我已经在此函数中创建了一个Azure函数,我调用了一个返回JSON的API。我想将此JSON解析为一个对象,以便在函数中使用它。我不能使用Newton.JSON,因为函数似乎不知道这一点。 如何解析JSON?”在Azure函数中,首先需要添加对NewtonSoft.JSON的引用。您可以通过“Newtonsoft.Json”实现这一点。别忘了引用 您可以通过newtonsoft使用常规序列化: var response = await client.GetAsync("<url>"

“我已经在此函数中创建了一个Azure函数,我调用了一个返回JSON的API。我想将此JSON解析为一个对象,以便在函数中使用它。我不能使用Newton.JSON,因为函数似乎不知道这一点。
如何解析JSON?”

在Azure函数中,首先需要添加对NewtonSoft.JSON的引用。您可以通过“Newtonsoft.Json”实现这一点。别忘了引用

您可以通过newtonsoft使用常规序列化:

var response = await client.GetAsync("<url>");
var json = await response.Content.ReadAsStringAsync();
var o= JsonConvert.DeserializeObject<"Type">(json);
var response=wait client.GetAsync(“”);
var json=await response.Content.ReadAsStringAsync();
var o=JsonConvert.DeserializeObject(json);

以下是一个完整的Azure函数源代码,用于使用JsonNet序列化/反序列化对象:

#r "Newtonsoft.Json"

using System.Net;
using Newtonsoft.Json;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    dynamic body = await req.Content.ReadAsStringAsync();
    var e = JsonConvert.DeserializeObject<EventData>(body as string);
    return req.CreateResponse(HttpStatusCode.OK, JsonConvert.SerializeObject(e));
}

public class EventData
{
    public string Category { get; set; }
    public string Action { get; set; }
    public string Label { get; set; }
}
样本输出:

"{\"Category\":\"Azure Functions\",\"Action\":\"Run\",\"Label\":\"Test\"}"

上面的答案是返回字符串,而不是JSON。我建议你修改你的答案如下:

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    dynamic body = await req.Content.ReadAsStringAsync();
    var e = JsonConvert.DeserializeObject<EventData>(body as string);
    return req.CreateResponse(HttpStatusCode.OK, e);
}
至于.Net Core 2:

string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
然后可以对其进行反序列化:

dynamic jObject= JsonConvert.DeserializeObject(requestBody);
要完成回答(转换为对象),请执行以下操作:

您可以执行以下操作:

var companyId = jObject["companyId"].ToString();
var payments = jCategory["payments"].ToObject<List<PaymentTransaction>>();
var companyId=jObject[“companyId”].ToString();
var payments=jCategory[“payments”].ToObject();
Azure Functions环境中添加了Json.NET的可能副本。请张贴您的密码。没有它是不可能猜出什么是错的。很可能是缺少程序集引用
dynamic jObject= JsonConvert.DeserializeObject(requestBody);
JToken jCategory = jObject;
var whatever = jCategory["yourkeyiteminjson"].ToObject<YourObjectType>();
{"companyId": "123456","payments": [{"id": "31212"},{"id": "31212"},{"id": "3"}],"miFees": [{"id": "452"},{"id": "254"}]}
var companyId = jObject["companyId"].ToString();
var payments = jCategory["payments"].ToObject<List<PaymentTransaction>>();