如何在Azure函数中解析Json

23 浏览
0 Comments

如何在Azure函数中解析Json

我在Azure Function中创建了一个函数,在这个函数中,我调用了一个返回JSON的API。我想将这个JSON解析为一个对象,以便在函数中使用。我无法使用Newton.JSON,因为函数似乎不知道它。我该如何解析这个JSON?

0
0 Comments

问题的原因是之前的回答返回的是字符串而不是JSON。解决方法是修改代码,使用JsonConvert.DeserializeObject将字符串转换为JSON对象,并返回JSON格式的Sample输出。代码如下:

public static async Task Run(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"}

0
0 Comments

问题的出现原因:在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数据了。

0
0 Comments

如何在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>>();

0