如何在Azure函数中解析Json
问题的原因是之前的回答返回的是字符串而不是JSON。解决方法是修改代码,使用JsonConvert.DeserializeObject将字符串转换为JSON对象,并返回JSON格式的Sample输出。代码如下:
public static async TaskRun(HttpRequestMessage req, TraceWriter log) { dynamic body = await req.Content.ReadAsStringAsync(); var e = JsonConvert.DeserializeObject (body as string); return req.CreateResponse(HttpStatusCode.OK, e); }
这样修改后的代码将返回没有JSON转义的Sample输出:
{"Category":"Azure Functions","Action":"Run","Label":"Test"}
问题的出现原因:在Azure Function中,需要对Json数据进行解析,但是没有清晰的方法说明如何进行解析。
解决方法:可以使用JsonNet库来进行Json数据的序列化和反序列化操作。
首先,需要在函数代码中引入Newtonsoft.Json库,并使用#r "Newtonsoft.Json"
进行引用。
然后,使用using Newtonsoft.Json;
来导入JsonNet库。
接着,编写一个静态的async Task方法,方法名为Run,参数为HttpRequestMessage和TraceWriter。
在方法中,通过使用await req.Content.ReadAsStringAsync()
来获取请求的内容,并将其赋值给一个动态类型的变量body。
然后,使用JsonConvert.DeserializeObject<EventData>(body as string)
将body反序列化为EventData类型的对象e。
最后,使用req.CreateResponse(HttpStatusCode.OK, JsonConvert.SerializeObject(e))
将e对象序列化为Json字符串,并返回响应。
需要注意的是,需要在函数代码中定义一个名为EventData的类,该类具有Category、Action和Label属性。
最后,给出了一个示例的输入和输出,用于演示函数的使用方法。
这样,就可以在Azure Function中解析Json数据了。
如何在Azure Function中解析JSON
在使用.NET Core 2时,可以通过以下方法解析JSON:
首先,读取请求体:
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
然后,将其反序列化:
dynamic jObject = JsonConvert.DeserializeObject(requestBody);
最后,将其转换为对象:
JToken jCategory = jObject; var whatever = jCategory["yourkeyiteminjson"].ToObject<YourObjectType>();
举个例子来展示其灵活性,假设有以下JSON输入:
{"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>>();